是否有一些方法可以使用symfony 2 access_control重定向到包含消息的登录页面?
我需要当前的角色,但在子路线中只有一个例外。 我想在不进入控制器的情况下创建一些会话包消息。
这可能吗?
access_control:
- { path: /user/submission, role: [ROLE_USER_WITH_MESSAGE]}
- { path: ^/user, role: [ROLE_USER] }
如果他尝试继续使用某条路线,我会在理由中向用户显示消息
答案 0 :(得分:1)
是的,可以在没有涉及控制器的情况下登录会话(flashbag消息)。它可以通过身份验证入口点服务来完成,该服务在身份验证过程开始后立即调用。此身份验证入口点服务是防火墙配置的一部分,作为entry_point
密钥。
有关详细信息,请访问:http://symfony.com/doc/current/components/security/firewall.html#entry-points
class MyAuthEntryPoint implements AuthenticationEntryPointInterface
{
protected $router;
public function __construct($router) {
$this->router = $router;
}
public function start(Request $request, AuthenticationException $authException = null) {
if ($request->get('_route') == 'submission') {
$session = $request->getSession();
$session->getFlashBag()->add('submissionUserMessage', 'Weclome user from submission!');
//or if you do not want to use flashBag
$session->set('submissionUserMessage', 'Weclome user from submission!');
}
return new RedirectResponse($this->router->generate('login'));
}
}
服务