安全性 – 实体提供者:尚未为帐户配置编码器

我正在尝试使用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

我在尝试使用表单登录时假设您出错.

虽然没有直接关联,但您应该使用命名路由替换您的登录路径.

点赞