我正在尝试使用Doctrine Entity Provider设置登录系统,但我总是收到此错误:
No encoder has been configured for account "Prefix\MainBundle\Entity\Admin"
这是我的设置:
security.yml
security:
encoders:
Prefix\MainBundle\Entity\Admin:
algorithm: sha1
encode_as_base64: false
iterations: 1
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
providers:
administrators:
entity: { class: PrefixMainBundle:Admin, property: username }
firewalls:
administrators:
pattern: ^/admin/
anonymous: ~
provider: administrators
form_login:
login_path: /admin/login
check_path: /admin/login_check
access_control:
- { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
我已经创建了Entity并实现了UserInterface但是我无法使它工作,如果有人能够对此有所了解,那就太好了.
最佳答案 将提供者移动到表单登录下:
form_login:
login_path: /admin/login
check_path: /admin/login_check
provider: administrators
我在尝试使用表单登录时假设您出错.
虽然没有直接关联,但您应该使用命名路由替换您的登录路径.