Php Symfony2-登录后再次显示登录表单

Php Symfony2-登录后再次显示登录表单,php,symfony,Php,Symfony,嗨,朋友们 我有一个例子,在symfony2中,我创建了一个安全捆绑包(未使用FOS用户捆绑包),当我登录时,我尝试再次访问登录页面。登录表单显示。即使我实际登录,也没有重定向到默认页面。如何在登录后防止此登录表单 下面是我的保安 已更新 firewalls: main: pattern: ^/ anonymous: ~ form_login: login_path: /log

嗨,朋友们

我有一个例子,在symfony2中,我创建了一个安全捆绑包(未使用FOS用户捆绑包),当我登录时,我尝试再次访问登录页面。登录表单显示。即使我实际登录,也没有重定向到默认页面。如何在登录后防止此登录表单

下面是我的保安

已更新

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 }

任何帮助都是值得的。

您能用您的路线更新问题吗


我认为您应该具有需要身份验证的默认路径(例如,
/secure area
),以及表示登录表单的其他路径(例如,
/secure area/login
)。因此,基本上,返回的访问者不会访问
/secure area/login
,而是
/secure area
。这样,它不会显示登录,而是从会话中重新加载用户…

Symfony不会自动执行此操作,因为登录页面始终可以访问,如
安全性中所示。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...
}

这会将经过身份验证的用户重定向到您的主页。当然,将“主页”替换为您希望将用户重定向到的页面名称。

hi jperovic谢谢您的回复。我不能完全理解你想表达的意思。我用security.yml更新了我的问题。谢谢Kosta…你解决了我的问题。只需使用$this->container->get('security.authorization\u checker')(2.6中新增)嗨,为什么这个解决方案对我不起作用。。我有循环参考。。。和symfony一样,文档登录必须位于防火墙前面。。。如何解决这个问题?symfony 2.7.4