2015-03-03 141 views
0

我有以下问题。在我的应用程序中存在登录和登录页面。如果用户点击“登录”链接,用户总是被重定向到登录页面。总是重定向到登录页

我定义为标志的路径页在“security.yml”我“ACCESS_CONTROL”像这样:

- { path: ^/user/register, roles: IS_AUTHENTICATED_ANONYMOUSLY} 

我看HTTP头,发现重定向“302”,但我使用此重定向在我的应用中找不到任何代码部分。我不知道为什么重定向被执行,有人可以给我一个提示吗?

GET /app_dev.php/user/register HTTP/1.1 
Host: app.dev-local 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 
Cookie: PHPSESSID=j7enuu35aguids9e0bqc4at195 
Referer: http://app.dev-local/app_dev.php/login 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36 

HTTP/1.1 302 Found 
Cache-Control: no-cache 
Connection: close 
Content-Type: text/html; charset=UTF-8 
Date: Tue, 03 Mar 2015 06:36:27 GMT 
Location: http://app.dev-local/app_dev.php/login 
Server: Apache/2.4.10 (Ubuntu) 
Transfer-Encoding: chunked 
X-Debug-Token: 0ec022 
X-Debug-Token-Link: /app_dev.php/_profiler/0ec022 

更新我的“security.yml”和“注册”防火墙:

security: 
    access_decision_manager: 
     strategy: unanimous 
    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 
     secured_area: 
      pattern: ^/ 
      anonymous: ~ 
      form_login: 
       login_path: login 
       check_path: login_check 
       csrf_provider: form.csrf_provider 
       success_handler: app_user_handler_login 
       failure_handler: app_user_handler_login 
      logout: 
       path: /logout 
       target: /login 
      switch_user: {role: ROLE_ADMIN} 
     signup: 
      pattern: ^/user/register 
      anonymous: true 

    access_control: 
     - { path: ^/scale, roles: ROLE_WISA } 
     - { path: ^/scale/add, roles: ROLE_WISA } 
     - { path: ^/scale/edit, roles: ROLE_WISA } 
     - { path: ^/scale/delete, roles: ROLE_ADMIN } 
     - { path: ^/scale/activate, roles: ROLE_WISA } 
     - { path: ^/scale/deactivate, roles: ROLE_WISA } 
     - { path: ^/questionnaire, roles: ROLE_WISA } 
     - { path: ^/questionnaire/add, roles: ROLE_WISA } 
     - { path: ^/questionnaire/edit, roles: ROLE_WISA } 
     - { path: ^/questionnaire/delete, roles: ROLE_ADMIN } 
     - { path: ^/questionnaire/activate, roles: ROLE_WISA } 
     - { path: ^/questionnaire/deactivate, roles: ROLE_WISA } 
     - { path: ^/roles, roles: ROLE_ADMIN } 
     - { path: ^/roles/add, roles: ROLE_ADMIN } 
     - { path: ^/roles/edit, roles: ROLE_ADMIN } 
     - { path: ^/user, roles: ROLE_MAB_MA } 
     - { path: ^/user/add, roles: ROLE_ADMIN } 
     - { path: ^/user/edit, roles: ROLE_MAB_MA } 
     - { path: ^/user/delete, roles: ROLE_ADMIN } 
     - { path: ^/user/show-profile, roles: ROLE_MAB_MA } 
     - { path: ^/user/deactivate, roles: ROLE_EDITOR } 
     - { path: ^/user/activate, roles: ROLE_EDITOR } 
     - { path: ^/user/absense/archive, roles: ROLE_MAB_MA } 
     - { path: ^/user/password/change, roles: ROLE_MAB_MA } 
     - { path: ^/user/loginhistory, roles: ROLE_MAB_MA } 
     - { path: ^/school, roles: ROLE_MAB_MA } 
     - { path: ^/school/add, roles: ROLE_EDITOR } 
     - { path: ^/school/deactivate, roles: ROLE_EDITOR } 
     - { path: ^/school/activate, roles: ROLE_EDITOR } 
     - { path: ^/school/delete, roles: ROLE_ADMIN } 
     - { path: ^/school/edit, roles: ROLE_EDITOR } 
     - { path: ^/school/profile, roles: ROLE_MAB_MA } 
     - { path: ^/institution, roles: ROLE_MAB_MA } 
     - { path: ^/institution/add, roles: ROLE_EDITOR } 
     - { path: ^/institution/deactivate, roles: ROLE_EDITOR } 
     - { path: ^/institution/activate, roles: ROLE_EDITOR } 
     - { path: ^/institution/delete, roles: ROLE_ADMIN } 
     - { path: ^/institution/edit, roles: ROLE_EDITOR } 
     - { path: ^/district/add, roles: ROLE_EDITOR } 
     - { path: ^/district/edit, roles: ROLE_EDITOR } 
     - { path: ^/district, roles: ROLE_MAB_MA } 
     - { path: ^/district/deactivate, roles: ROLE_EDITOR } 
     - { path: ^/district/activate, roles: ROLE_MAB_MA } 
     - { path: ^/district/delete, roles: ROLE_ADMIN } 
     - { path: ^/exclusion-periods/add, roles: ROLE_EDITOR } 
     - { path: ^/exclusion-periods/edit, roles: ROLE_EDITOR } 
     - { path: ^/exclusion-periods, roles: ROLE_MAB_MA } 
     - { path: ^/exclusion-periods/deactivate, roles: ROLE_EDITOR } 
     - { path: ^/exclusion-periods/activate, roles: ROLE_MAB_MA } 
     - { path: ^/exclusion-periods/delete, roles: ROLE_ADMIN } 
     - { path: ^/municipality/edit, roles: ROLE_EDITOR } 
     - { path: ^/municipality/add, roles: ROLE_EDITOR } 
     - { path: ^/municipality, roles: ROLE_MAB_MA } 
     - { path: ^/municipality/delete, roles: ROLE_ADMIN } 
     - { path: ^/permissions-category/add, roles: ROLE_ADMIN } 
     - { path: ^/permissions-category/edit, roles: ROLE_ADMIN } 
     - { path: ^/permissions-category, roles: ROLE_ADMIN } 
     - { path: ^/permissions-category/deactivate, roles: ROLE_ADMIN } 
     - { path: ^/permissions-category/activate, roles: ROLE_ADMIN } 
     - { path: ^/permissions-category/delete, roles: ROLE_ADMIN } 
     - { path: ^/permissions/add, roles: ROLE_ADMIN } 
     - { path: ^/permissions/edit, roles: ROLE_ADMIN } 
     - { path: ^/permissions, roles: ROLE_ADMIN } 
     - { path: ^/permissions/deactivate, roles: ROLE_ADMIN } 
     - { path: ^/permissions/activate, roles: ROLE_ADMIN } 
     - { path: ^/permissions/delete, roles: ROLE_ADMIN } 
     - { path: ^/province/add, roles: ROLE_EDITOR } 
     - { path: ^/province/edit, roles: ROLE_EDITOR } 
     - { path: ^/province, roles: ROLE_MAB_MA } 
     - { path: ^/province/deactivate, roles: ROLE_EDITOR } 
     - { path: ^/province/activate, roles: ROLE_MAB_MA } 
     - { path: ^/province/delete, roles: ROLE_ADMIN } 
     - { path: ^/schooltype/add, roles: ROLE_EDITOR } 
     - { path: ^/schooltype/edit, roles: ROLE_EDITOR } 
     - { path: ^/schooltype, roles: ROLE_MAB_MA } 
     - { path: ^/schooltype/deactivate, roles: ROLE_EDITOR } 
     - { path: ^/schooltype/activate, roles: ROLE_EDITOR } 
     - { path: ^/schooltype/delete, roles: ROLE_ADMIN } 
     - { path: ^/languages/add, roles: ROLE_ADMIN } 
     - { path: ^/languages/edit, roles: ROLE_ADMIN } 
     - { path: ^/languages/activate, roles: ROLE_ADMIN } 
     - { path: ^/languages/deactivate, roles: ROLE_ADMIN } 
     - { path: ^/languages/delete, roles: ROLE_ADMIN } 
     - { path: ^/languages, roles: ROLE_EDITOR } 
     - { path: ^/projects/add, roles: ROLE_EDITOR } 
     - { path: ^/projects/edit, roles: ROLE_EDITOR } 
     - { path: ^/projects, roles: ROLE_MAB_MA } 
     - { path: ^/projects/deactivate, roles: ROLE_EDITOR } 
     - { path: ^/projects/activate, roles: ROLE_EDITOR } 
     - { path: ^/projects/delete, roles: ROLE_ADMIN } 
     - { path: ^/characteristics/add, roles: ROLE_EDITOR } 
     - { path: ^/characteristics/edit, roles: ROLE_EDITOR } 
     - { path: ^/characteristics, roles: ROLE_MAB_MA } 
     - { path: ^/characteristics/deactivate, roles: ROLE_EDITOR } 
     - { path: ^/characteristics/activate, roles: ROLE_MAB_MA } 
     - { path: ^/characteristics/delete, roles: ROLE_ADMIN } 
     - { path: ^/user/import, roles: ROLE_ADMIN } 
     - { path: ^/user/export, roles: ROLE_ADMIN } 
     - { path: ^/school/import, roles: ROLE_ADMIN } 
     - { path: ^/school/export, roles: ROLE_ADMIN } 
     - { path: ^/userdocumentation/edit, roles: ROLE_MAB_MA } 
     - { path: ^/userdocumentation/add, roles: ROLE_MAB_MA } 
     - { path: ^/userdocumentation, roles: ROLE_MAB_MA } 
     - { path: ^/userdocumentation/activate, roles: ROLE_EDITOR } 
     - { path: ^/userdocumentation/deactivate, roles: ROLE_EDITOR } 
     - { path: ^/userdocumentation/delete, roles: ROLE_ADMIN } 
     - { path: ^/application-ajax/school/list, roles: ROLE_MAB_MA } 
     - { path: ^/application-ajax/school/province, roles: ROLE_MAB_MA } 
     - { path: ^/application-ajax/school/municipality, roles: ROLE_MAB_MA } 
     - { path: ^/application-ajax/school/branch, roles: ROLE_MAB_MA } 
     - { path: ^/application-ajax/schooltype/branch, roles: ROLE_MAB_MA } 
     - { path: ^/application-ajax/district/province, roles: ROLE_MAB_MA } 
     - { path: ^/application-ajax/province/municipality, roles: ROLE_MAB_MA } 
     - { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/languages/change, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/application-ajax/password/generate$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/user/register, roles: IS_AUTHENTICATED_ANONYMOUSLY} 
     - { path: ^/blank, roles: ROLE_USER } 
     - { path: ^/, roles: ROLE_USER } 

    providers: 
     administrators: 
      entity: { class: appUserBundle:User, property: username } 

    encoders: 
     app\UserBundle\Entity\User: 
      algorithm: bcrypt 

    role_hierarchy: 
     ROLE_USER: ~ 
     ROLE_STUDENT: [ROLE_USER] 
     ROLE_TEACHER: [ROLE_USER] 
     ROLE_SCHOOL: [ROLE_USER] 
     ROLE_MAB_MA: [ROLE_USER] 
     ROLE_WISA: [ROLE_MAB_MA] 
     ROLE_HEADMASTER: [ROLE_USER] 
     ROLE_SCHOOL_PARENTS_COUNCIL: [ROLE_USER] 
     ROLE_CLERK: [ROLE_MAB_MA] 
     ROLE_JUNIOR_CONSULTANT: [ROLE_MAB_MA] 
     ROLE_SENIOR_CONSULTANT: [ROLE_MAB_MA] 
     ROLE_EXTERNAL_TEAMLEADER: [ROLE_MAB_MA] 
     ROLE_INTERNAL_TEAMLEADER: [ROLE_MAB_MA] 
     ROLE_TEAMLEADER: [ROLE_EXTERNAL_TEAMLEADER, ROLE_INTERNAL_TEAMLEADER] 
     ROLE_SCHOOL_SUPERVISORY: [ROLE_MAB_MA] 
     ROLE_SCHOOLOPERATOR: [ROLE_MAB_MA] 
     ROLE_CLERK_CONTROLLER: [ROLE_TEAMLEADER, ROLE_CLERK] 
     ROLE_EDITOR: [ROLE_CLERK_CONTROLLER, ROLE_SCHOOL_SUPERVISORY, ROLE_TEACHER, ROLE_STUDENT, ROLE_JUNIOR_CONSULTANT, ROLE_SENIOR_CONSULTANT, ROLE_WISA, ROLE_HEADMASTER, ROLE_SCHOOL_PARENTS_COUNCIL, ROLE_SCHOOLOPERATOR] 
     ROLE_ADMIN: [ROLE_EDITOR] 

现在我解决我的问题:)问题是,我在ACCESS_CONTROL区有一个路径“/用户” 。这也包括URL“用户/注册”。我将我的网址名称更改为“/注册”。现在问题已解决,非常感谢您的支持

+0

你可以显示整个'security.yml'文件吗?这可能是一些路线的错误配置。 – 2015-03-03 08:01:20

+0

@ i-am-michiel我加了整个security.yml – smartcoderx 2015-03-03 08:15:47

+0

' - {path:^/user/register,roles:IS_AUTHENTICATED_ANONYMOUSLY}'似乎不在你的security.yml中,你确定已经包含它吗? – DonCallisto 2015-03-03 09:05:09

回答

0

您的登录表单对于非关联用户不可访问。

检查这一行:

secured_area: 
     pattern: ^/ 

这意味着,除了 “/” 要求连接的用户的所有URL模式。包括注册表单。您可能需要为注册表单添加特定的防火墙。

只需添加一个特定的防火墙的注册表单:

signup: 
     pattern: ^/user/register 
     anonymous: true 

编辑:正如我在评论说,订单有一定的重要性。当你定义一个路径列表时(如你的例子),将会使用第一个匹配路径。

- { path: ^/user, roles: ROLE_MAB_MA } 
- { path: ^/user/register, roles: IS_AUTHENTICATED_ANONYMOUSLY} 

你应该限制你的路:

- { path: ^/user$, roles: ROLE_MAB_MA } 

AS /user/register实际上将^/user匹配。

+0

@ i-am-michiel现在我为路由“/ user/register”创建一个特定的防火墙“注册”。如果我将新的防火墙放在现有的“secured_area”上并调用url进行注册,我会得到“访问此资源需要完整身份验证”的异常。如果我将“注册”防火墙置于“secured_area”下,则会再次出现重定向至登录页面。我也清除apc缓存,文件和浏览器缓存。 – smartcoderx 2015-03-03 09:13:52

+0

安全组件使用与该模式匹配的第一个防火墙。如果将它放在现有的防火墙下面,它将不会被使用。 – 2015-03-03 10:57:39

+0

@ i-am-michiel现在好了我明白了,谢谢你的支持 – smartcoderx 2015-03-03 11:47:20