私はモバイルアプリケーションを開発していますが、トークンの期間が限られていることがわかりました。私は私がトークンリフレッシュする機能を持っているsymfonyのサーバを、使用しています:期限切れのJWTトークン - トークンをリフレッシュする方法
/**
* @Route("/api/refresh", name="api_refresh")
*/
public function refreshTokenAction(Request $request)
{
if(!$request->headers->has('Authorization')) {
return;
}
$extractor = new AuthorizationHeaderTokenExtractor(
'Bearer',
'Authorization'
);
$token = $extractor->extract($request);
$encoder = $this->get('lexik_jwt_authentication.encoder');
$data = $encoder->decode($token);
if(!$data){
return;
}
$username = $data['mail'];
$user = $this->getDoctrine()->getRepository('AppBundle:Benevole')
->findOneBy(['mail' => $username]);
$token = $this->get('lexik_jwt_authentication.encoder')
->encode(['mail' => $user->getMail()]);
// Return genereted tocken
return new JsonResponse(['token' => $token]);
}
私はこのように自分のサーバーを呼び出しているAngularJSでアプリケーションと、このサーバーを使用します。
var refreshToken = function(idPatient){
var token = window.localStorage.getItem('token'); // current valid token
return $http({
method : 'GET',
url : url + '/refresh',
headers : {Authorization : 'Bearer ' + token},
}).then(function(result) {
console.log(result.data);
return result.data;
});
};
私は私の機能のリフレッシュトークンをテストすると、ボタンをクリックすると動作し、トークンがリフレッシュされます。
私は自分のトークンをどのように更新することができるのかを知りたいので、毎回トークンをチェックする必要がありますか?毎回これを見つけるアプリケーションにいくつかの条件を付ける必要がありますか?
refreshCountの代わりに、リフレッシュ回数を制限するカスタムプロパティである絶対有効期限を導入することもできます。 – zerkms
それは別の有効なアプローチです:) –
彼らはまったく同じです:-)私はまた、人々が短い生活JWTを発行するために使用される別の長いリビングリフレッシュトークンを発行するのを見ました。場合によっては、より便利かもしれません。 – zerkms