Symfony 2 access_controll重定向与params

时间:2017-02-10 11:52:06

标签: symfony security

是否有一些方法可以使用symfony 2 access_control重定向到包含消息的登录页面?

我需要当前的角色,但在子路线中只有一个例外。 我想在不进入控制器的情况下创建一些会话包消息。

这可能吗?

access_control:
        - { path: /user/submission, role: [ROLE_USER_WITH_MESSAGE]}
        - { path: ^/user, role: [ROLE_USER] }

如果他尝试继续使用某条路线,我会在理由中向用户显示消息

1 个答案:

答案 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'));
    }
}

服务