2017-05-10 17 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(); 

もしI悪い資格情報を入力すると正常に動作します:不正な資格情報 正しい資格情報を入力して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のルートでのみ、symfonyが正しく自動作成を行いました。他のパスはセキュリティトークンを生成しません – TeoM

答えて

1

私はモーダルログインを作るしようとしていると、ユーザーが正しい メール&パスワードを入力した後 モーダルがある間、私がログインしているユーザー(のIDを取得する必要があります開いている、ページをリフレッシュせずに)。データベースの usersテーブルのID。

だから、AJAXでログインする必要があります。そうしないと、ページがリフレッシュされます。 AJAXを使用すると別の問題が発生します。いくつかの状況に応じて、ログイン後にリダイレクトされます。これは、ユーザー情報を含む応答が必要なために必要なものではありません。したがって、独自の認証ハンドラを作成する必要があります。この記事では、どのように説明していますhttp://www.webtipblog.com/adding-an-ajax-login-form-to-a-symfony-project/ symfonyの3

+0

私はすでにそのハンドラを実装していますが、onAuthenticationSuccess内で以下のことを行うことは考えていませんでした:$ id = $ token-> getUser() - > getId();ありがとう。 – TeoM

0

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

関連する問題