2013-04-09 2 views
11

symfony2에서 인증 성공 후 어떤 일을하는 방법에 대한 정보를 얻으려면 지금 당분간을 찾고 있습니다. 이전 해시를 사용하여 성공적인 인증을 한 후 bcrypt를 사용하기 위해 사용자 비밀번호를 다시 해치려합니다. 나는 유효한 평범한 암호가있을 때 이것을해야한다 그래서 신임장 검사 직후에해야하고 방향을 바꾸기 전에.symfony2 로그인 성공 직후 및 리디렉션 이전에 작업을 수행 하시겠습니까?

실마리를 얻는 방법에 대한 단서가 있습니까?

Symfony에서 이벤트 발송자에 대해 뭔가 알았지 만 인증 성공 후 이벤트가 있으면 찾을 수 없습니다.

잘못된 방향으로 시도하고 더 나은 접근 방법을 제안한다면 저를 시정하십시오. 나는 이벤트가 단지 인증 성공 후, 그것은 security.authentication.success를 불렀다 발사 발견

// 편집

좋아. 이제는이 이벤트에 연결할 수 있지만 현재 내 바운드 코드에서 이벤트 리스너를 연결해야하는 위치가 확실하지 않습니다. 나는 load() 방법에 내 /src/Pkr/BlogUserBundle/DependencyInjection/PkrBlogUserExtension.php 방법으로해야합니까?

답변

28

성공적으로 로그인 할 때 실행할 로그인 성공 처리기를 지정할 수 있습니다. 예를 들어

, 당신의 security.yml

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      success_handler: my.security.login_handler 

지금 Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface를 구현하는 클래스를 생성하고 로그인에 성공한, 당신은 당신이 필요로하는 무엇이든 당신이 맞는 볼 리디렉션을 처리 할 수 ​​있습니다.

/** 
* 
*/ 
public function onAuthenticationSuccess(Request $request, TokenInterface $token) 
{ 
    // handle it and return a response 
} 

그런 다음 번들에 대한 귀하의 services.xml 파일에서 해당 이름을 가진 서비스를 만들거나 새로 생성 된 처리기를 사용하여 config.yml있다.

원래는이 자습서 다음이 작업을 수행하는 방법을 발견 :

http://www.reecefowell.com/2011/10/26/redirecting-on-loginlogout-in-symfony2-using-loginhandlers/

+0

, 나는 곧 그것을 시도 할 것이다 :) – piotrekkr

+0

귀하의 솔루션은 잘 작동합니다. 처음에는 로그인 성공 이벤트에 첨부 된 이벤트 리스너를 시도했지만 요청 객체가 사용자의 솔루션과 같이 쉽게 액세스 할 수 없었습니다. 감사합니다. – piotrekkr

+0

도움을 주셔서 감사합니다.이 작업을 시도했을 때 $ request-> headers-> get 'referer')이 내 로그인 페이지로 설정되었습니다. * 사용자가 로그인 페이지로 리디렉션되기 전에 * 요청한 페이지를 얻는 방법에 대한 아이디어가 있습니까? – adavea

관련 문제