사용자가 성공적으로 로그인 한 후에 작업 집합을 수행해야합니다. 데이터베이스에서 데이터를로드하고 세션에 저장하는 작업이 포함됩니다.Symfony2 : 성공적인 로그인 이벤트 후 작업 집합 수행
이것을 구현하는 가장 좋은 방법은 무엇입니까?
사용자가 성공적으로 로그인 한 후에 작업 집합을 수행해야합니다. 데이터베이스에서 데이터를로드하고 세션에 저장하는 작업이 포함됩니다.Symfony2 : 성공적인 로그인 이벤트 후 작업 집합 수행
이것을 구현하는 가장 좋은 방법은 무엇입니까?
security.interactive_login
이벤트에 리스너를 추가 할 수 있습니다.
이렇게 수신기를 연결하십시오. 이 예제에서는 보안 컨텍스트와 세션을 종속성으로 전달합니다.
참고 : SecurityContext에 심포니 2.6으로 사용되지 않습니다. http://symfony.com/blog/new-in-symfony-2-6-security-component-improvements
parameters:
# ...
account.security_listener.class: Company\AccountBundle\Listener\SecurityListener
services:
# ...
account.security_listener:
class: %account.security_listener.class%
arguments: ['@security.context', '@session']
tags:
- { name: kernel.event_listener, event: security.interactive_login, method: onSecurityInteractiveLogin }
를 참조 리스너에 당신은 당신이 세션에 원하는대로 저장할 수 있습니다하십시오. 이 경우 사용자 시간대를 설정합니다.
이것은 트릭을하는 것처럼 보입니다. 수업에서 선언해야 할 의존성이 있습니까? – jbsound
아니, 당신 만의 의존성 (아마 엔티티 관리자). – MDrollette
조금 더 파기 한 후에 종속성이 지정되어야하는 것처럼 보입니다. 더 완벽한 코드 구현을 보여주는이 기사를 찾았습니다. http://www.metod.si/login-event-listener-in-symfony2/ – jbsound
이벤트 자체에서 사용자 인스턴스를 가져올 수도 있습니다. 토큰 저장소를 삽입 할 필요가 없습니다.
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
$event->getAuthenticationToken()->getUser()
}
서비스를 사용하여 작업을 수행하는 방법 : http://stackoverflow.com/questions/8308050/how-to-disable-redirection-after-login-check-in-symfony-2/8312188#8312188 – unairoldan