php – Symfony2-登录表单在登录后再次出现

前端之家收集整理的这篇文章主要介绍了php – Symfony2-登录表单在登录后再次出现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
你好stackoverflow的朋友,

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

下面是我的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所示:
access_control:
    - { path: ^/login,roles: IS_AUTHENTICATED_ANONYMOUSLY }

如果您不希望经过身份验证的用户访问登录页面,则需要手动将其从登录页面重定向.要做到这一点,去你的Controller进行登录操作,并在startAction()函数的开头添加这个:

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

原文链接:https://www.f2er.com/php/139760.html

猜你在找的PHP相关文章