Laravel API で tymon/jwt-auth トークンを更新する
P粉798010441
2023-08-14 14:35:54
<p>Laravel API があり、<code>tymon/jwt-auth</code> をインストールしました。ユーザーにログインしてトークンを取得するには、次のコードを使用します。 </p>
<pre class="brush:php;toolbar:false;">if (! $token = auth()->attempt($request->only('email', 'password'), true)) {
throw ValidationException::withMessages([
'電子メール' => '無効な認証情報',
]);
}
return new TokenResource([
'トークン' => $トークン、
'ユーザー' => $ユーザー、
]);
</pre>
<p>古いトークンを無効にして新しいトークンを発行する <code>リフレッシュ トークン</code> のエンドポイントもあります。ドキュメントに従って、次のコードを追加しました。 </p>
<pre class="brush:php;toolbar:false;">return new TokenResource([
'トークン' => auth()->refresh()、
'ユーザー' => auth()->user(),
]);
</pre>
<p>問題は、現在のトークンでエンドポイントにアクセスすると、新しいトークンが返されるが、古いトークンはまだ有効であることです。 </p>
<p>リフレッシュトークンを無効にする方法はありますか? </p>
これはデフォルトの動作です。したがって、望ましい結果を達成するために、それらをブラックリストに登録できます。ユーザーがトークンを使用しようとすると、それがブラックリストに含まれているかどうかを確認できます。その場合は拒否しても構いません。
これを実現するには、トークンがブラックリストに含まれているかどうかを確認するミドルウェアを作成し、そのミドルウェアをトークンの検証が必要なルートに適用します。
ミドルウェア:
リーリーただし、これはシステムが実際に必要とする場合にのみ実行してください。
トークンの作成後に手動でトークンを期限切れにすることはできません。これがトークンの仕組みです。トークンを作成した場合、有効期限が切れるまで有効ですが、トークンのブラックリストを作成し、トークンを更新するたびに最初のトークンをブラックリストに追加し、トークンの有効期間を短縮することも検討できます (十分に短い場合)。自動有効期限切れメカニズムに依存できます。