2017-02-10 10 views
0

symfony 2 access_controlを使用してログインページにリダイレクトする方法はありますか?Symfony 2 access_controll with params

現在の役割は必要ですが、サブルートでは1つの例外が必要です。 コントローラに入力せずにセッションバッグメッセージを作成したいとします。

これは可能ですか?

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

特定のルートに行くはい、それは関与コントローラなしでログインする前に(flashbagメッセージの)セッションをSEすることが可能です。これは、認証プロセスの開始直後に呼び出される認証エントリポイントサービスによって行うことができます。この認証エントリポイントサービスは、ファイアウォール設定の一部で、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')); 
    } 
} 

サービス