Как настроить Sanctum в laravel для работы с приложениями Android? Ошибка 419

#android #laravel #axios #laravel-sanctum

#Android #laravel #axios #laravel-sanctum

Вопрос:

У меня есть гибридное приложение vuejs, которое корректно работает в веб-версии, но оно поступает 419 с сервера Laravel при вызове его из версии Android.

ВЫЗОВ AXIOS

 vm.axios.get('/sanctum/csrf-cookie').then(response => {
  vm.logging = true;
  vm.axios({
    method: 'POST',
    url: '/api/login/employee',
    data:{
      email: vm.email,
      password: vm.password
    },
  }).then(function (response) {
    console.log(response.data)
    if(response.data.success){
      vm.axios.defaults.headers.common['Authorization'] = 'Bearer ' response.data.token;
      localStorage.setItem('bearer', vm.axios.defaults.headers.common['Authorization']);
      vm.$store.commit('updateUserData');
    }
  }, function (error) {
    console.log(error.message)
  }).then(function (){
    vm.logging = false;          
  });
});
  

CORS

 'paths' => ['api/*','sanctum/csrf-cookie'],

'allowed_methods' => ['*'],

'allowed_origins' => ['*'],

'allowed_origins_patterns' => [],

'allowed_headers' => ['*'],

'exposed_headers' => [],

'max_age' => 0,

'supports_credentials' => true,
  

ЯДРО

 protected $middleware = [
    // AppHttpMiddlewareTrustHosts::class,
    AppHttpMiddlewareTrustProxies::class,
    FruitcakeCorsHandleCors::class,
    AppHttpMiddlewareCheckForMaintenanceMode::class,
    IlluminateFoundationHttpMiddlewareValidatePostSize::class,
    AppHttpMiddlewareTrimStrings::class,
    IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
];

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareEncryptCookies::class,
        IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
        IlluminateSessionMiddlewareStartSession::class,
        // IlluminateSessionMiddlewareAuthenticateSession::class,
        IlluminateViewMiddlewareShareErrorsFromSession::class,
        AppHttpMiddlewareVerifyCsrfToken::class,
        IlluminateRoutingMiddlewareSubstituteBindings::class,
    ],

    'api' => [
        EnsureFrontendRequestsAreStateful::class,
        'throttle:60,1',
        IlluminateRoutingMiddlewareSubstituteBindings::class,
    ],
];
  

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

1. включены ли эти маршруты api.php ?

2. Да, это @lagbox — да, кроме первого sanctum/csrf-cookie , но он находится в массиве CORS path

3. понятно, обычно 419 — это сбой проверки токена csrf, но если вы используете маршрут api и не настроили группу промежуточного программного обеспечения для включения этого промежуточного программного обеспечения, это не должно быть проблемой

4. Он наверняка связан с токеном csrf, но я не знаю, что мне делать? В браузере он работает нормально, но при запуске из мобильного приложения происходит сбой. Не уверен, что мешает Laravel разрешить запросу продолжить свой путь

5. применяется промежуточное программное обеспечение csrf token… это промежуточное программное обеспечение, которое вы показываете, превращает ваш API без состояния в API с отслеживанием состояния, если запрос поступает из интерфейса … возможно, файл cookie сеанса не отправляется github.com/laravel/sanctum/blob /…