После установки пакета «php-open-source-saver/jwt-auth» мне нужно определить, когда истек срок действия токена пользователя, создать новый токен и вернуть его клиенту.
Чтобы реализовать это, я написал следующие маршруты:
Route::prefix('v1')->group(function () {
Route::group(['middleware' => 'api', 'prefix' => 'auth'], function () {
Route::controller(AuthController::class)->group(function () {
Route::post('signup', 'signup');
})->middleware('throttle:api');
Route::controller(AuthController::class)
->middleware(['json.response', 'jwt.verify', 'jwt.refresh'])
->group(function () {
Route::post('active-account', 'active_account');
});
});
});
Здесь маршрут, связанный с регистрацией, правильно создает токен и отправляет его клиенту. Его код следующий:
$user = User::whereUsername($request->username)->first();
$token = auth()->login($user);
Теперь, после получения токена, я могу легко получить информацию о пользователе, используя маршрут, относящийся к «активному аккаунту», и вставив токен в часть заголовка как «Токен на предъявителя» в первый запрос. Но когда я отправляю запрос еще раз с этим маршрутом, я получаю ошибку «401 Неавторизованный», хотя я разместил этот массив в разделах маршруты и промежуточное программное обеспечение:
['json.response', 'jwt.verify', 'jwt.refresh']
Теперь я ожидаю, что для пользователя будет создан новый токен и отправлен клиенту, но я всегда получаю ошибку «401 Несанкционировано».
Класс JwtMiddleware:
class JwtMiddleware extends BaseMiddleware
{
public function handle(Request $request, Closure $next): mixed
{
try {
$user = JWTAuth::parseToken()->authenticate();
} catch (TokenInvalidException $e) {
return response()->json(['status' => 'Token is Invalid'], 404);
} catch (TokenExpiredException $e) {
$current_token = JWTAuth::getToken();
$token = JWTAuth::refresh($current_token);
return response()->json(
[
'status' => 'Token is Expired',
'refresh_token' => $token
], 401
);
} catch (Exception $e) {
return response()->json(['status' => 'Authorization Token not found'], 400);
}
return $next($request);
}
}
Определение в файле Kernel.php:
protected $middlewareAliases = array(
///
'jwt.verify' => JwtMiddleware::class,
'jwt.refresh' => RefreshToken::class,
'json.response' => ForceJsonResponse::class,
///
);
Подробнее здесь: https://stackoverflow.com/questions/784 ... ized-error
Токен обновления Laravel и получение несанкционированной ошибки ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Загрузка файла ASP.NET MVC в SharePoint онлайн приводит к несанкционированной ошибке 401
Anonymous » » в форуме C# - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-