Symfony2-登录后再次出现登录表单 [英] Symfony2- Login Form appears again after logged in

查看:31
本文介绍了Symfony2-登录后再次出现登录表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,stackoverflow 的朋友们,

Hi stackoverflow friends,

我有一个实例,在 symfony2 中我创建了一个安全包(未使用 FOS USER BUNDLE),当我登录时,我尝试再次访问登录页面,显示登录表单.是否没有重定向到默认页面,即使我实际上已登录.如何在登录后阻止此登录表单.

I have an instance that ,In symfony2 I created a security bundle (not used FOS USER BUNDLE) in which when I logged in, I try to access the login page again the login form is shown.Is there's no redirection to the default page, even if I'm actually logged in. How to prevent this login form ,after logged in.

下面是我的 security.yml

Below is my 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 }

任何帮助都是可观的.

推荐答案

Symfony 不会自动执行此操作,因为登录页面始终可以访问,如 security.yml 所示:

Symfony won't automatically do this because login page is always accessible as indicated in security.yml:

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

如果您不希望经过身份验证的用户进入登录页面,您需要手动将他们重定向到登录页面之外.为此,请转到您的控制器进行登录操作,并在 loginAction() 函数的开头添加:

If you don't want authenticated users to get to the login page, you need to manually redirect them away from login page. To do that, go to your Controller for login action and at the beginning of loginAction() function add this:

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"替换为您希望将用户重定向到的页面的路由名称.

This will redirect authenticated users to your homepage. Of course, replace '_homepage' to route name of a page you wish to redirect users to.

这篇关于Symfony2-登录后再次出现登录表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆