Получить {"message": "Не прошедший проверку подлинности."} При отправке запроса POST на сервер laravel - PullRequest
1 голос
/ 03 мая 2020

У меня проблема с отправкой POST-запроса с Vue ax ios на laravel сервер со святым местом.

Сначала я получаю токен.

Мой маршрут api.php

Route::post('/get_token', function (Request $request) {
    $request->validate([
        'email' => 'required|email',
        'password' => 'required',
        'device_name' => 'required'
    ]);
    $user = User::where('email', $request->email)->first();
    if (! $user || ! Hash::check($request->password, $user->password)) {
        throw ValidationException::withMessages([
            'email' => ['The provided credentials are incorrect.'],
        ]);
    }
    return $user->createToken($request->device_name)->plainTextToken;
});

vue axios

this.$axios.post('/api/get_token', {
    email: this.email,
    password: this.password,
    device_name: this.device_name,
}).then(response=>{...});

И когда я отправляю GET-запрос с полученным токеном, он работает правильно

vue axios

this.$axios.get('/api/book/all', {
    headers: {
        "Authorization": 'Bearer ' + this.$store.getters.getToken
    }
}).then(response=>{...})

api.php

Route::middleware('auth:sanctum')->get('/book/all', 'BookController@all');

Но когда я пытаюсь отправить запрос POST, я получаю {"message":"Unauthenticated."} и 401 ошибку

vue axios

this.$axios.post('/api/book/add', {
    headers: {
        "Authorization": 'Bearer ' + this.$store.getters.getToken,
    },
    data: {
        title: this.addingTitle,
        author: this.addingAuthor,
    }
})

api.php

Route::middleware('auth:sanctum')->post('/book/add', 'BookController@add');

Извините, я просто новичок в сети и многого не понимаю, надеюсь, вы мне поможете.

1 Ответ

0 голосов
/ 03 мая 2020

Если вы используете post, то первый параметр - это URL, а второй - данные, которые вы публикуете. В вашем случае имеет смысл использовать:

this.$axios({
    method: 'POST',
    url: '/api/book/add'
    headers: {
        "Authorization": 'Bearer ' + this.$store.getters.getToken,
    },
    data: {
        title: this.addingTitle,
        author: this.addingAuthor,
    }
})

или, если вы хотите использовать .post, тогда:

this.$axios.post('/api/book/add', {
        title: this.addingTitle,
        author: this.addingAuthor,
    }, {
    headers: {
        "Authorization": 'Bearer ' + this.$store.getters.getToken,
    }
})


...