我有一个正常工作的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/