我有一个正常工作的Symfony2应用程序,可以正确地登录和注销用户,并且在注销时可以将用户正确地重定向到主页。

我想在注销时将其保留在当前页面上,只是没有它们的登录权限。

我的问题是:

我可以动态设置用户登出后的定向页面吗?

最佳答案

您需要的是注销成功处理程序。

在security.yml中定义注销处理程序:

security:
    firewalls:
        admin_area:
            logout:
                success_handler: acme.security.logout_success_handler

处理程序如下所示:
namespace Acme\Bundle\SecurityBundle\Handler;

use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Bundle\FrameworkBundle\Routing\Router;
use Symfony\Component\DependencyInjection\ContainerAware;

class LogoutSuccessHandler extends ContainerAware implements LogoutSuccessHandlerInterface
    {
    public function onLogoutSuccess(Request $request)
    {
        // dynamic route logic

        return new RedirectResponse($this->container->get('router')->generate('dynamic_route_name'));
    }
}

顺便说一句...请删除不必要的进口,希望这会有所帮助! :D

这是services.yml
services:
    acme.security.logout_success_handler:
        class: Acme\Bundle\SecurityBundle\Handler\LogoutSuccessHandler
        calls:
            - [ setContainer, [ @service_container ] ]

关于php - Symfony2动态注销目标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20461599/

10-13 23:16