拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 注销后如何停止Symfony重定向

注销后如何停止Symfony重定向

白鹭 - 2022-03-02 2106 0 0

默认的 Symfony 行为是在注销后重定向到“/”。我不需要来自 Symfony 的任何重定向,因为它是一个 api 应用程序。

就像在登录期间 Symfony 控制进行身份验证时如何,但仍然运行登录控制器以执行进一步的操作。在这种情况下,这也是注销的理想选择。

安全.yaml

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            lazy: true
            provider: app_user_provider

            json_login:
                check_path: app_login
                username_path: email
                password_path: password

            logout:
                path: app_logout

来自 Symfony 档案的 src/Controller/SecurityController.php

    /**
     * @Route("/logout", name="app_logout", methods={"GET"})
     */
    public function logout(): void
    {
        // controller can be blank: it will never be called!
        throw new \Exception('Don\'t forget to activate logout in security.yaml');
    }

uj5u.com热心网友回复:

您可以撰写自定义注销处理程序。实际上,在 symfony 5.1 中引入了一种新方法。基本上,现在您可以全域或为某些特定防火墻注册事件侦听器,并在该人注销后执行任何操作。

回到你的问题(来自下面的博客文章):

后者会帮助你。这意味着您可以RedirectResponse通过为事件设定新的回应物件来回传您想要的任何内容而不是默认值

服务.yaml:

services:
    App\EventListener\CustomLogoutListener:
        tags:
            - name: 'kernel.event_listener'
              event: 'Symfony\Component\Security\Http\Event\LogoutEvent'
              dispatcher: security.event_dispatcher.main
              method: onLogout

还有你的听众:

namespace App\EventListener;

use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Security\Http\Event\LogoutEvent;

class CustomLogoutListener
{
    public function onLogout(LogoutEvent $logoutEvent): void
    {
        $logoutEvent->setResponse(new JsonResponse([]));
    }
}

阅读更多:更简单的注销自定义

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *