2017-02-10 93 views
0

是否有一些方法可以通過使用symfony 2 access_control的消息重定向到登錄頁面?Symfony 2 access_controll帶參數的重定向

我需要當前的角色,但只有一個例外的子路線。 我想在不輸入控制器的情況下創建一些會話包消息。

這可能嗎?

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

我問這理由來顯示信息給用戶,如果他嘗試某些航線上的那張

+0

你試試這個Ansewer: [什麼是通知用戶的ACCESS_CONTROL規則重定向後的最佳方式(HTTP: //stackoverflow.com/a/17432089/7226219) –

回答

1

是的,這是可能的SE(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')); 
    } 
} 

服務