Получите ошибку 401 (без аутентификации) после входа в святилище laravel с помощью nuxtjs

Я установил:

  • ларавель v 7.30.4
  • v 2.15.7

После того, как я войду в свое святилище laravel с модулем аутентификации nuxtjs, когда nuxt попытается получить пользователя, ответ laravel 401 ошибка (сообщение без аутентификации).

Статус моей сети: введите здесь описание изображения

Статус моих файлов cookie: введите здесь описание изображения

api.php:

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

nuxt.config.js :

   auth:{
    strategies: {
      'laravelSanctum': {
        provider: 'laravel/sanctum',
        url: 'http://localhost:8000',
        endpoints:{
          login:{
            url:'/login'
          },
          logout:{
            url:'/api/logout'
          },
        },
        user:{
          property:false
        }
      },
    },
    redirect:{
      login: '/auth/login',
      logout:'/',
      home:'/'
    },
    cookie: {
      options: {
        sameSite: 'lax'
      },
    },
  },

LoginController.php :

    public function login(Login $request)
    {
        $user=User::where('phone_number', $request->phone_number)->first();
        if (Hash::check($request->password, $user->password)){
            $request->session()->regenerate();
            return response()->json(null, 201);
        }
        return $this->setStatusCode(422)->respondWithError('password','invalid pasword');
    }

.env :

SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_DOMAIN=localhost

SANCTUM_STATEFUL_DOMAINS=localhost:3000

Я не знаю, в чем проблема, что я получаю ошибку 401!


person Omid Reza Heidari    schedule 06.07.2021    source источник
comment
Можете ли вы добиться, чтобы эта работа работала через Postman?   -  person kissu    schedule 12.07.2021


Ответы (3)


вам нужно вернуть свой api token после входа в систему и отправить его в каждом запросе, который вы используете middleware('auth:sanctum') в маршруте laravel.

подробнее о выпуске токенов в святилище

для получения пользователя требуется token, и если он не предоставлен, выдается ошибка 401.

person fevid    schedule 06.07.2021
comment
это не аутентификация токена API, это аутентификация спа: laravel.com/docs/8. x/sanctum#spa-аутентификация - person Omid Reza Heidari; 06.07.2021

У меня была та же проблема, решение заключалось в том, чтобы добавить localhost: 8000 (домен laravel) в SANCTUM_STATEFUL_DOMAINS.

SESSION_DOMAIN=localhost
SANCTUM_STATEFUL_DOMAINS=localhost:8000,localhost:3000
person user2956278    schedule 09.07.2021
comment
не работает для меня! - person Omid Reza Heidari; 09.07.2021

Вы добавили EnsureFrontendRequestsAreStateful в группы промежуточного программного обеспечения api в файле app/Http/Kernel.php вашего приложения?

use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;

protected $middlewareGroups = [
  ...
  'api' => [
      EnsureFrontendRequestsAreStateful::class, // Add & import this class
      'throttle:60,1',
      \Illuminate\Routing\Middleware\SubstituteBindings::class,
  ],
];

Это необходимо, если вы используете святилище с приложением SPA. Это было задокументировано как часть Установки.

Также просмотрите этот раздел, чтобы узнать, связана ли проблема, с которой вы столкнулись, с CORS в Санктуме

person Abishek    schedule 14.07.2021
comment
я сделал это первым :) я увидел документ и сделал это, но это не сработало - person Omid Reza Heidari; 15.07.2021
comment
Вы используете пакет nuxt/auth. Если нет, можете ли вы попробовать использовать это вместо этого и посмотреть, решит ли это проблему? auth.nuxtjs.org/providers/laravel-sanctum Вот еще одна запись в блоге на его использование -laravel-sanctum - person Abishek; 15.07.2021
comment
я уже пользуюсь! - person Omid Reza Heidari; 16.07.2021
comment
@OmidRezaHeidari, вы уже приблизились к решению проблемы или все еще получаете ошибку 401? - person Abishek; 16.07.2021
comment
я получаю 401 ответ еще! - person Omid Reza Heidari; 17.07.2021