私はLexik JWTバンドル(Symfony 2.8)を使ってGoogleを認証しています。コントローラからjwtトークンを取得する方法(既にログインしているユーザ)
public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
$user = $token->getUser();
$jwt = $this->jwtManager->create($user);
$response = new JsonResponse();
$event = new AuthenticationSuccessEvent(['token' => $jwt], $user, $response);
$this->dispatcher->dispatch(Events::AUTHENTICATION_SUCCESS, $event);
$redirectResponse = new RedirectResponse('http://localhost:3000?token='.$event->getData()['token']."&username=".$user->getUsername());
return $redirectResponse;
}
だから私はいくつかのローカルホストにユーザーをリダイレクトし、「トークン」get
変数としてトークンを渡し、それがうまく機能している:私の成功ハンドラは次のようになります。後で私はそのトークン値トラフヘッダを渡すことができ、私は認証される。
問題は - 私のコントローラから同じトークンを取得したい。
$jwtManager = $this->get('lexik_jwt_authentication.jwt_manager');
$tokenStorage = $this->get('security.token_storage');
$token = $tokenStorage->getToken();
$user = $token->getUser();
$jwt = $jwtManager->create($user);
$response = new JsonResponse();
$event = new AuthenticationSuccessEvent(['token' => $jwt], $user, $response);
$token = $event->getData()['token'];
echo $token;
をそして、私は実際にいくつかのトークンを取得し、それは私が成功ハンドラから取得同じものではありません。私は、同様のコードを使用しています。ヘッダー "Autorization"パラメーターとして渡してみましたが、機能しません。 401エラーとメッセージが表示されています:
与えられた設定で特定のJWTを確認できません。 \ "lexik_jwt_authentication.encoder \"暗号化オプションが最後の認証以降に変更されている場合は、トークンを更新してください。問題が解決しない場合は、構成されたキー/パスフレーズが有効であることを確認してください。
私はここで間違っていますか?なぜ私は別のトークンを取得していますか、どのように私はフォームの成功ハンドラを得ているトークンを得ることができますか?