Опробовал все возможности для входа в систему с помощью 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')));
}
}
}
Когда я пытаюсь войти в систему, это не выдает никакой ошибки, учетные данные действительны (пользователь был создан в консоли), но я продолжаю перенаправляться на страницу входа в систему, я не могу перейти к панели администратора.
Кто-нибудь может помочь в этом?
Заранее спасибо!
С помощью stateless: true
с формой логин не имеет большого смысла, так как вы захотите сохранить информацию об аутентифицированном пользователе в сеансе. Вы должны установить его на false
в вашем конфиге.
Других решений пока нет …