Токен обновления Laravel и получение несанкционированной ошибкиPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Токен обновления Laravel и получение несанкционированной ошибки

Сообщение Anonymous »

После установки пакета «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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»