2017-05-10 5 views
0

모달 로그인을 시도하고 있는데 사용자가 올바른 이메일 & 암호를 입력 한 후에는 로그온 한 사용자의 ID를 가져와야합니다 (모달은 아직 열리지 만, 페이지). 데이터베이스의 사용자 테이블에있는 ID입니다.Symfony3 인증 후 보안 토큰을 얻습니다.

일반적으로, 나는 다음 행 ID를 얻을 : 모달 상황에서

$this->get('security.token_storage')->getToken()->getUser()->getId(); 

을, 나는 인 LoginController 및 컨트롤러 내부의 양식을 보내고 난이 :

/** @var AuthenticationUtils $authenticationUtils */ 
$authenticationUtils = $this->get('security.authentication_utils'); 
$error = $authenticationUtils->getLastAuthenticationError(); 

나는 경우, 잘못된 자격 증명을 입력하면 올바르게 표시됩니다. 잘못된 자격증 명 올바른 자격 증명을 입력하면 var_dump ($ error)를 수행하면 NULL이됩니다.

내가 할 경우 $ error = $ authenticationUtils-> getLastAuthenticationError() -> getToken();

null 객체에 getToken을 적용하려고하면 오류가 발생합니다.

나는이 작업을 수행하려고하면

:

/** @var Accounts $account */ 
$account = $this->get('security.token_storage')->getToken()->getUser(); 
var_dump($account); 

나는 같은 오류가 발생합니다. 페이지를 새로 고치면 로그인되어 있습니다.

범위는 $ account 개체를 얻는 것입니다.

페이지를 새로 고치지 않고 어떻게 사용자 (엔티티)를 얻을 수 있습니까? 동일한 컨트롤러에서 $ authenticationUtils-> getLastAuthenticationError() 바로 뒤에?

감사합니다,

+0

가 수동으로 사용자 인증을 수행하는 방법이 문서에서는 설명? 또는 표준'check_path' 경로를 사용 했습니까? – yceruto

+0

두 가지를 시도했지만 check_path 경로에서만 심판이 올바르게 작성되었습니다. 다른 경로는 보안 토큰을 생성하지 않습니다. – TeoM

답변

1

내가 모달 로그인을 만들려고 노력하고있어 사용자가 올바른 이메일 & 비밀번호를 입력 한 후에 모달가있는 동안, 내가 로그인 한 사용자 (의 ID를 얻을 필요 페이지를 새로 고치지 않고 열 수 있음). 데이터베이스의 사용자 테이블의 ID입니다.

따라서 AJAX를 통해 로그인해야합니다. 그렇지 않으면 페이지가 새로 고쳐집니다. AJAX를 사용하면 또 다른 문제가 발생할 것입니다. 어떤 상황에 따라 다른 페이지로 로그인 한 후 리다이렉트됩니다. 일부 사용자 정보가 포함 된 응답을 원하기 때문에 원하는 내용이 아닙니다. 따라서 자신의 인증 처리기를 작성해야합니다. 심포니 3 http://www.webtipblog.com/adding-an-ajax-login-form-to-a-symfony-project/

+0

이미 해당 처리기를 구현했지만 다음과 같은 onAuthenticationSuccess 내부에서는 수행하지 않을 것입니다. $ id = $ token-> getUser() -> getId(); 감사. – TeoM

0

가 : $id =$this->getUser()->getId()