可以';t使用默认身份验证登录


Can't log in with default authentication

我无法使用默认的symfony login_check路径登录。

我在数据库内的user表中有以下记录:

id | username | password                         | email | isActive | created             | roles
1    test       098f6bcd4621d373cade4e832627b4f6   NULL    1          2015-11-25 23:56:53   ROLE_USER

我已经基于它生成了实体。现在我有以下登录表单:

<form action="{{path('login_check')}}" method="post">
     <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
     <input type="text" class="form-control" name="login" placeholder="Username">
     <input type="password" class="form-control" name="password" placeholder="Password">
     <input type="submit" class="form-control">
</form>

安全文件:

security:
    encoders:
        AppBundle'Entity'Users:
            id: custom.encoder
    providers:
        esaver_users:
            entity:
                class: AppBundle'Entity'User
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        admin_area:
            pattern: ^/
            http_basic: ~
            form_login:
                csrf_provider: form.csrf_provider
                csrf_parameter: _csrf_token
                provider: esaver_users
                check_path: /login_check
                login_path: /
                default_target_path: /
                always_use_default_target_path: true
                username_parameter: login
                password_parameter: password
            logout:
                path:   logout
                target: login
            anonymous: ~
#        default:
#            anonymous: ~
    access_control:
        - { path: ^/$, role: IS_AUTHENTICATED_ANONYMOUSLY}
        - { path: ^/test$, role: ROLE_USER }

好的,所以我创建了带有die()功能的/test路由,看看它是否有效,但它不起作用——当我访问这个路由时,我会被重定向回主页。

怎么了?

使用您的代码时,我得到了太多重定向:ERR_too_many_DIRECTS

您需要为编码器指定属性。。。并指定角色层次结构(_H)。。。并正确地形成路径

security:
    encoders:
        AppBundle'Entity'Users:
            id: custom.encoder
    role_hierarchy:
        ROLE_USER:       ROLE_VIEWER
        ROLE_ADMIN:       ROLE_USER
    providers:
        esaver_users:
            entity:
                class: AppBundle'Entity'User
                property: username
    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/*
            security: false
        main:
            pattern: ^/
            http_basic: ~
            form_login:
                provider: esaver_users
                login_path: /login
                check_path: /login_check
                csrf_provider: form.csrf_provider
                csrf_parameter: _csrf_token
                default_target_path: /
                always_use_default_target_path: true
                username_parameter: login
                password_parameter: password
                use_referer: true
            logout:
                path: /logout
                target: /login
            security: true
            anonymous: true
    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/test, roles: [ROLE_USER] }