Невозможно войти, используя FOSUserBundle

Опробовал все возможности для входа в систему с помощью FOSUserBundle и EasyAdminBundle, но безуспешно

Вот мой security.yml:

security:
encoders:
MyApp\UserBundle\Entity\User:
algorithm: sha1
encode_as_base64: false
iterations: 1
FOS\UserBundle\Model\UserInterface: bcrypt

role_hierarchy:
ROLE_ADMIN:       [ROLE_USER, ROLE_ADMIN]
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

firewalls:
dev:
pattern:  ^/(_(profiler|wdt)|css|images|js)/
security: false

auth_area:
pattern: ^/users/(login|register|uploadPhoto|forgotPassword)
anonymous: ~

admin_area:
pattern: ^/admin
form_login:
provider: fos_userbundle
csrf_parameter: _csrf_security_token
csrf_token_id: alongstringhere
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: admin_index
always_use_default_target_path: true
logout:
path: fos_user_security_logout
target: fos_user_security_login
anonymous: ~
stateless: true

secured_area:
pattern:    ^/
anonymous: ~
stateless: true
simple_preauth:
authenticator: MyApp.sessionkey_authenticatorproviders:
administrators:
entity: { class: MyAppUserBundle:User, property: email }
fos_userbundle:
id: fos_user.user_manager

access_control:
- { path: ^/api/doc, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/users/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/users/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/users/logout, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/users/uploadPhoto, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/users/forgotPassword, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/logout$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/register$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: [ROLE_ADMIN, ROLE_USER] }
- { path: ^/, roles: ROLE_USER }

config.yml для пользователя fos:

fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: MyApp\UserBundle\Entity\Admin

используемые маршруты.имл:

easy_admin_bundle:
resource: "@MyAppMainBundle/Controller/AdminController.php"type:     annotation
prefix:   /admin

fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"prefix:   /admin

admin_login:
pattern: /admin/login

admin_logout:
pattern: /admin/logout

admin_index:
pattern:  /admin

Административная сущность:

namespace MyApp\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\Common\Collections\ArrayCollection;

/**
* Admin
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="MyApp\UserBundle\Entity\Repository\AdminRepository")
* @ORM\Entity
*/
class Admin extends BaseUser
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

public function __construct()
{
$this->setUpdatedAt(new \DateTime(date('Y-m-d H:i:s')));

if($this->getCreatedAt() == null)
{
$this->setCreatedAt(new \DateTime(date('Y-m-d H:i:s')));
}
}/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

/**
* @var \DateTime
*
* @ORM\Column(name="updated_at", type="datetime")
*/
private $updatedAt;

/**
* @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime")
*/
private $createdAt;

/**
* Set updatedAt
*
* @param \DateTime $updatedAt
*
* @return Admin
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;

return $this;
}

/**
* Get updatedAt
*
* @return \DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}

/**
* Set createdAt
*
* @param \DateTime $createdAt
*
* @return Admin
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;

return $this;
}

/**
* Get createdAt
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}

/**
* @ORM\PrePersist
* @ORM\PreUpdate
*/
public function updatedTimestamps()
{
$this->setUpdatedAt(new \DateTime(date('Y-m-d H:i:s')));

if($this->getCreatedAt() == null)
{
$this->setCreatedAt(new \DateTime(date('Y-m-d H:i:s')));
}
}
}

Когда я пытаюсь войти в систему, это не выдает никакой ошибки, учетные данные действительны (пользователь был создан в консоли), но я продолжаю перенаправляться на страницу входа в систему, я не могу перейти к панели администратора.
Кто-нибудь может помочь в этом?
Заранее спасибо!

0

Решение

С помощью stateless: true с формой логин не имеет большого смысла, так как вы захотите сохранить информацию об аутентифицированном пользователе в сеансе. Вы должны установить его на false в вашем конфиге.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]