Я использую laravel v5.8, VueJS и паспорт v7.4 для аутентификации. Ниже моя функция входа в систему:
public function login(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => 'required|string|email',
'password' => 'required|string',
]);
if ($validator->fails()) {
return response([
'status' => 0,
'message' => $validator->errors()->first()
]);
}
$credentials = request(['email', 'password']);
if (!Auth::attempt($credentials))
return response()->json([
'status' => 0,
'message' => 'Unauthorized'
], 401);
$user = $request->user();
$tokenResult = $user->createToken('authToken');
$token = $tokenResult->token;
$token->save();
$user_role = Auth::user()->user_type;
$user->assignRole($user_role);
return response()->json([
'status' => 1,
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString(),
]);
}
Моя проблема - мой токен истекает через 10 секунд (это для целей тестирования). Поэтому я проверяю для каждого маршрута, истек ли токен, используя следующую функцию в VueJS:
isValid(token) {
const payload = this.payload(token);
if (payload) {
const datetime = Math.floor(Date.now() / 1000);
return payload.exp >= datetime ? true : false;
}
return false;
}
Так что это работает нормально, но что мне делать, чтобы обновить sh токен? Можем ли мы создать промежуточное программное обеспечение, чтобы справиться с ним самостоятельно? Или есть в любом случае, чтобы определить, активно ли пользователь использует приложение, как при обычной аутентификации на основе сеанса?