2015-11-25 97 views
3

我无法使用默认的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 } 

好了,所以我创建/test路线与它die()功能,看看它的工作原理,但它没有 - 当我访问这条路线,我被重定向回主页面。

出了什么问题?

+0

http://stackoverflow.com/a/17406584/5397119 –

回答

0

与您的代码我得到了太多的重定向:ERR_TOO_MANY_REDIRECTS

您需要为您的编码器指定属性......还可以指定role_hierarchy ......和正确的路径/形状的路径

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] } 
+0

它仍然有问题。在登录期间在数据库上执行的唯一查询是通过用户名从用户表中选择全部。它不会登录。 – user99999

+0

您必须指定它...这一个查询..有参数NONE_PROVIDED?您使用了哪个版本的SYMFONY?你的USER是否实现了SF UserInterface?在SYMFONY中的 – pooler

+0

:DaoAuthenticationProvider扩展了UserAuthenticationProvider ...调试函数..以查看您是否获取用户名......或者哪里失败 – pooler