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

时间:2013-05-21 17:13:21

标签: security symfony doctrine-orm

我正在尝试使用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,但我无法使其工作,如果有人可以对此有所了解,那就太棒了。

1 个答案:

答案 0 :(得分:2)

将提供者移至表格login:

        form_login:
            login_path:  /admin/login
            check_path:  /admin/login_check
            provider:     administrators

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

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