2017-02-10 1 views
0

symfony 2 access_control을 사용하여 로그인 페이지로 리디렉션 할 수있는 방법이 있습니까?symfony 2 access_controll with params

현재 경로가 필요하지만 하위 경로에서는 하나의 예외 만 필요합니다. 컨트롤러에 입력하지 않고 일부 세션 백 메시지를 만들고 싶습니다.

그게 가능할까요?

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

나는 그가에이

+0

: (HTTP를 [어떤이 access_control 규칙 리디렉션 후 사용자에게 통지하는 가장 좋은 방법입니다] //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')); 
    } 
} 

서비스 당신이 Ansewer을 시도 않았다