Ошибка аутентификации токена API Laravel sanctum

#laravel #laravel-7

#laravel #laravel-7

Вопрос:

Я использую Laravel sanctum для создания токенов API, которые могут использоваться для аутентификации запросов API, но когда я создаю токен и использую токен открытого текста для аутентификации запросов от postman, он всегда выдает мне 401.

вот моя конечная точка:

 Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
     return $request->user();
});
  

Я генерирую токены следующим образом:

 $user = $request->user();
        $abilities = [];

        if ($request->read) $abilities[] = 'data:read';
        if ($request->write) $abilities[] = 'data:write';

        $token = $user->createToken($request->name, $abilities);

        return response([
            'token' => $token->plainTextToken,
            'tokens' => $user->tokens
        ],201);
  

Я возвращаю токен palintext, но когда я использую его в postman, он терпит неудачу

 Bearer 118586|IgKEMCTQq85Lb6k1km6HrewBo3wUS23OuTNHj13i
  

Я использую это промежуточное программное обеспечение в своей группе API

 EnsureFrontendRequestsAreStateful::class
  

и я отключил его, но ничего не изменилось.

кто-нибудь может помочь с этим?

Ответ №1:

для тех, кто сталкивается с этой проблемой, вам необходимо изменить драйвер api с token на sanctum config/auth.php guards => api => driver

 'guards' => [

    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'sanctum',
        'provider' => 'users',
        'hash' => false,
    ],

],
  

Комментарии:

1. Я честно попробовал это, и в Postman я получаю сообщение «Это действие неавторизовано». Однако я добился некоторого успеха, не включив это и обновив файлы запросов модели (сохранить и обновить в моем экземпляре) до: public function authorize() { return false; }