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)) {
던져 ValidationException::withMessages([
'이메일' => '잘못된 자격 증명',
]);
}
새로운 TokenResource([
'토큰' => $토큰,
'사용자' => $사용자,
]);
</pre>
<p>또한 이전 토큰을 무효화하고 새 토큰을 발행하도록 되어 있는 <code>새로 고침 토큰</code>에 대한 엔드포인트도 있습니다. 문서에 따르면 다음 코드를 추가했습니다. </p>
<pre class="brush:php;toolbar:false;">새 TokenResource([
'토큰' => 인증()->새로고침(),
'사용자' => 인증()->사용자(),
]);
</pre>
<p>문제는 현재 토큰으로 엔드포인트에 액세스하면 새 토큰이 반환되지만 이전 토큰은 여전히 유효하다는 것입니다. </p>
<p>새로 고침 토큰을 무효화하는 방법이 있나요? </p>
이것이 기본 동작입니다. 따라서 원하는 결과를 얻으려면 해당 항목을 블랙리스트에 추가할 수 있습니다. 사용자가 토큰을 사용하려고 하면 해당 토큰이 블랙리스트에 있는지 확인할 수 있습니다. 그렇다면 거절하시면 됩니다.
토큰이 블랙리스트에 있는지 확인하는 미들웨어를 생성하고 해당 미들웨어를 토큰 검증이 필요한 경로에 적용하면 이를 달성할 수 있습니다.
미들웨어:
으아악그러나 시스템에서 실제로 필요한 경우에만 이 작업을 수행해야 합니다.
토큰을 생성한 후에는 수동으로 만료할 수 없습니다. 이것이 토큰이 작동하는 방식입니다. 토큰을 생성하면 만료될 때까지 유효하지만 토큰 블랙리스트를 생성할 수 있으며 토큰을 새로 고칠 때마다 첫 번째 토큰을 블랙리스트에 추가하고 토큰의 수명을 낮추는 것도 고려해 보세요(충분히 낮은 경우). 자동 만료 메커니즘을 사용할 수 있습니다.