我有一个正常工作的Symfony2应用程序,可正确记录用户进出,并且在正确注销时可将用户重定向到主页。Symfony2动态注销目标?
我想在注销时将它们保留在当前页面上,只有没有它们的登录权限。
我的问题是:
我可以动态设置的用户被定向到当他们注销页面?
我有一个正常工作的Symfony2应用程序,可正确记录用户进出,并且在正确注销时可将用户重定向到主页。Symfony2动态注销目标?
我想在注销时将它们保留在当前页面上,只有没有它们的登录权限。
我的问题是:
我可以动态设置的用户被定向到当他们注销页面?
我需要注销成功处理程序,这是我是如何实现它:
security.yml:
logout:
success_handler: acme.security.logout_success_handler
config.yml:
services:
acme.security.logout_success_handler:
class: Acme\DefaultBundle\Handler\LogoutSuccessHandler
的Symfony/src目录/阿克米/ DefaultBundle /处理器/ LogoutSuccessHandler.php:
<?php
namespace Acme\DefaultBundle\Handler;
use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\DependencyInjection\ContainerAware;
class LogoutSuccessHandler extends ContainerAware implements LogoutSuccessHandlerInterface
{
public function onLogoutSuccess(Request $request)
{
$target_url = $request->query->get('target_url')
? $request->query->get('target_url')
: "/";
return new RedirectResponse($target_url);
}
}
注销其正确重定向到主页,因为在注销动作将其设置在家中的行动来重定向时
你需要的是一个注销成功处理程序。
定义注销处理器在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 ] ]
。所以注销操作将用户重定向到当前操作。 – sas