Symfony 2.7.7。注销:无法找到路径/注销的控制器

时间:2015-12-14 16:29:05

标签: php symfony authentication logout

在Symfony 2.7.7项目中,我实现了官方文档中描述的传统登录表单。不幸的是,每次用户注销时都会出现以下错误:

  

无法找到路径“/ logout”的控制器。路由配置错误。

我遵循了这个配置http://symfony.com/doc/2.7/book/security.html#logging-out,我过去成功了很多次,但我找不到错误。

这是你的代码:

#security.yml
security:
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false    
        login:
            pattern:  ^/login$
            anonymous: ~
        main:
            anonymous: ~
            form_login:
                login_path: /login
                check_path: /login_check    
        secured_area:
            pattern:    ^/
            form_login: ~
            remember_me:
                key: "%secret%"
                lifetime: 604800
                path:     /
                domain:   ~
            logout:
                path:   /logout
                target: /login
    access_control:
        - { path: ^/admin/utenti/modifica-password-scaduta, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, roles: ROLE_ADMIN }
        - { path: ^/aziende, roles: [ROLE_ADMIN, ROLE_ADMINISTRATIVE_PERSONNEL, ROLE_DOCTOR] }
        - { path: ^/pazienti, roles: [ROLE_ADMIN, ROLE_ADMINISTRATIVE_PERSONNEL, ROLE_DOCTOR] }
        - { path: ^/cartelle-sanitarie, roles: [ROLE_ADMIN, ROLE_ADMINISTRATIVE_PERSONNEL, ROLE_DOCTOR] }

#routing.yml
app:
    resource: "@AppBundle/Controller/"
    type:     annotation

logout:
    path: /logout

注销路径包含在router:debug

提供的列表中
  

名称方法方案主机路径
   login_route任何/登录任何人    login_check任何/ login_check任何一个   退出任何任何/退出

我知道许多讨论都集中在这个问题上(即http://www.forosdelweb.com/f68/symfony-2-7-logout-fallo-1133307/http://ambracode.com/index/show/99164),但是我很多天都找不到错误而且我被卡住了!

谢谢

UPDATE:我已经临时修复了它,在SecurityController中定义了一个注销操作:

/**
 * @Route("/logout", name="logout")
 */
public function logoutAction()
{
    $this->container->get('security.context')->setToken(null);

    return $this->redirect($this->generateUrl('login_route'));
}

也许这段代码可以帮助处于相同条件的人!

1 个答案:

答案 0 :(得分:0)

我认为问题在于您正在尝试匹配/注销。 您的路径中有前缀(secured_area)。 尝试在secured_area中使用此模式:

pattern: ^/secured_area

尝试在router.yml中匹配:

/secured_area/logout