2012-03-22 78 views
13

喜计算器的朋友后,Symfony2-登录表单再次出现登录

我有,在Symfony2中我创建了一个安全包(未使用FOS USER束)中,当我登录,我尝试实例访问登录页面再次shown.Is没有重定向到默认页面,即使我真正登陆,如何防止这种情况的登录表单,登录后的登录表单。

下面是我security.yml

已更新

firewalls: 
     main: 
      pattern: ^/ 
      anonymous: ~ 
      form_login: 
       login_path: /login 
       check_path: /login_check 
      logout: 
       path: /logout 
       target: /login  

    access_control: 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/centerreg, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/customredirect, roles: ROLE_USER } 
     - { path: ^/admin/, roles: ROLE_ADMIN } 
     - { path: ^/center/, roles: ROLE_CENTER } 
     - { path: ^/client/, roles: ROLE_CLIENTADMIN } 
     - { path: ^/examcenter/, roles: ROLE_EXAMCENTER } 
     - { path: ^/tutor/, roles: ROLE_TUTOR } 
     - { path: ^/evaluator/, roles: ROLE_EVALUATOR } 
     - { path: ^/student/, roles: ROLE_STUDENT } 
     - { path: ^/user/, roles: ROLE_USER } 

任何帮助将是可观的。

+0

嗨,为什么这个解决方案不适合我? ..我得到循环参考...并像symfony文档登录必须在防火墙前...如何解决这个问题? symfony 2.7.4 – Franky238 2015-09-30 06:33:56

回答

21

的Symfony不会自动这样做,因为登录页面总是访问为security.yml表示:

access_control: 
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

如果你不这样做希望通过身份验证的用户访问登录页面,您需要手动将其从登录页面重定向。要做到这一点,去你的控制器登录操作,并在在loginAction的开始()函数中添加此:

public function loginAction() 
{ 
    if ($this->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY')) 
    { 
     // redirect authenticated users to homepage 
     return $this->redirect($this->generateUrl('_homepage')); 
    } 

    //other code goes here... 
} 

这将身份验证的用户重定向到您的主页。当然,将'_homepage'替换为您希望重定向用户的页面的路由名称。

+1

谢谢科斯塔...你找出我的问题。 – 2012-03-26 03:37:51

+0

我很高兴我可以帮助:-) – Kosta 2012-03-26 12:45:41

+0

只需使用$ this-> container-> get('security.authorization_checker')来代替(2.6中的新功能) – Ronan 2015-08-30 20:28:38

1

你能更新你的路线问题吗?

我认为你应该有默认路径(例如,/secure-area)需要身份验证和其他(例如,/secure-area/login)代表您的登录表单。所以,基本上,回访者会不是访问/secure-area/login而是/secure-area。这样,它不会显示登录,但脱离盘中重装用户...

+0

嗨jperovic感谢您的回应。我无法完全理解你想传达什么。我用security.yml更新了我的问题。 – 2012-03-23 03:35:50