繁体   English   中英

Symfony 4.2 无法注销

[英]Symfony 4.2 can't Logout

我想在我的Symfony项目上实现注销操作。

目前,当我进行注销操作时,我收到异常

controller can be blank: it will never be executed!. 

我已经深入研究了互联网和 Symfony 文档,通常这个端点 controller 永远不会到达。

在我的上下文中,我无法注销,我不知道为什么执行此注销function。

这是我的配置SecurityController.php

/**
 * @Route("/logout", name="app_logout", methods={"GET"})
 */
public function logout()
{
    // controller can be blank: it will never be executed!
    throw new \Exception('controller can be blank: it will never be executed!');
}

安全性.yaml

firewalls:
dev:
    pattern: ^/(_(profiler|wdt)|css|images|js)/
    security: false

main:
    anonymous: ~
    pattern:  /login
    provider: app_user_provider
    guard:
        authenticators:
            - App\Security\LoginFormAuthenticator
    logout:
        path: app_logout
        # where to redirect after logout
        target: app_login

祝你今天过得愉快!

您将注销侦听器放置在“主”防火墙中,但该模式未涵盖注销 url。 所以“/logout”的请求不会通过它运行。 您可以将注销侦听器放入覆盖注销 url 的防火墙中,或者修改“主”防火墙的模式以包含注销 url。 后者看起来像这样:

# config/packages/security.yaml
firewalls:
  main:
    # ...
    pattern: ^/(login|logout)$
    # ...

使用php bin/console debug:router检查您的路线。

对我来说,首先调用的是在安全 controller 中创建的 security_logout。 我简单地从安全 controller 中删除了 function 并且它起作用了(也删除了注释)

我想对我的Symfony项目实施注销操作。

此刻,当我执行注销操作时,我收到了异常

controller can be blank: it will never be executed!. 

我已经深入研究了Internet和Symfony文档,通常永远不会到达此终结点控制器。

在我的上下文中,我无法注销,我也不知道为什么执行此注销功能。

这是我的配置SecurityController.php

/**
 * @Route("/logout", name="app_logout", methods={"GET"})
 */
public function logout()
{
    // controller can be blank: it will never be executed!
    throw new \Exception('controller can be blank: it will never be executed!');
}

security.yaml

firewalls:
dev:
    pattern: ^/(_(profiler|wdt)|css|images|js)/
    security: false

main:
    anonymous: ~
    pattern:  /login
    provider: app_user_provider
    guard:
        authenticators:
            - App\Security\LoginFormAuthenticator
    logout:
        path: app_logout
        # where to redirect after logout
        target: app_login

祝你今天过得愉快!

阅读文档

要启用注销,请激活防火墙下的注销配置参数。

# config/packages/security.yaml
firewalls:
  main:
    # ...

    logout:
      path:   app_logout
      # where to redirect after logout
      # target: app_any_route

接下来,您需要为此 URL 创建路由(但不是控制器)。

# config/routes.yaml
app_logout:
  path: /logout
  methods: GET

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM