2012-09-19 24 views
0

我使用Symfony2系统进行用户身份验证,并且当用户使用ROLE_ADMIN以外的其他角色尝试登录时,他可以,但他在403页面上被阻止。这是我的安全配置:坏角色重定向到403而不是失败

security: 
encoders: 
    Me\UserBundle\Entity\User: 
     algorithm: sha512 
     encode-as-base64: true 
     iterations: 10 
providers: 
    main: 
     entity: 
      class: Me\UserBundle\Entity\User 
      property: username 
firewalls: 
    secured_area: 
     pattern: ^/ 
     anonymous: ~ 
     form_login: 
      login_path: /login 
      check_path: /login_check 
      default_target_path: /admin/user/ 
     logout: 
      path: /logout 
      target: /login 
access_control: 
    - { path: ^/admin/, roles: [ROLE_ADMIN] } 
    - { path: ^/account, roles: [IS_AUTHENTICATED_FULLY] } 

我想,如果用户尝试登录与其他角色相比ROLE_ADMIN,他将返回登录表单上的身份验证错误,并没有被记录一个403错误的任何地方,他去。 我该怎么做? 谢谢

回答

1

只有通过配置才能获得此行为。由于抛出一个AccessDeniedException是正常的行为(用户通过身份验证,所以需要重定向她/他进行身份验证),您必须句柄 AccessDenied。

请参阅this answer,它解释了如何创建和使用AccessDeniedHandler