首页 文章

Symfony 2 access_controll重定向与params

提问于
浏览
0

有没有办法使用symfony 2 access_control重定向到登录页面的消息?

我需要当前的角色,但在子路由中只有一个例外 . 我想创建一些会话包消息而无需进入控制器 .

这有可能吗?

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

我问这个是为了向用户展示如果他试图继续某条路线的消息

1 回答

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

    服务

相关问题