Laravel, Vuejs, ax ios получать сообщения для авторизованного пользователя - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь получить задачи вошедшего в систему пользователя в vuejs компонент через ax ios, но я продолжаю получать

POST http://localhost: 8000 / api / tasks 401 (Несанкционированный)

Вот маршруты из API. php:

Route::group(['middleware' => 'auth:api'], function() {

    Route::prefix('tasks')->group(function() {
        Route::post('/', 'TasksController@index');
        Route::post('{id}', 'TasksController@single');
        Route::post('new', 'TasksController@new');
    });

});

Функция index TasksController:

public function index(Request $request) {

    if ( $request->ajax() ) {
        return auth()->user()->tasks()->orderBy('name', 'ASC')->get();
    }

    return view('tasks.index')
                ->with('tasks', auth()->user()->tasks()->orderBy('name', 'ASC')->get());

}

И vuejs компонент:

<template>
    <div>
        <ul>
            <li v-for="task in tasks" v-bind:key="task.id">{{ task.name }}</li>
        </ul>
    </div>
</template>

<script>
    export default {
        data() {
            return {
                tasks: [],
            }
        },

        created() {
            this.fetchTasks();
        },

        methods: {

            fetchTasks() {
                axios({
                    url: 'api/tasks',
                    method: 'POST',
                    headers: {
                        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                    }
                }).then(res => {
                    this.tasks = res.data;
                });
            }

        }
    }
</script>

1 Ответ

0 голосов
/ 21 марта 2020

Вы используете промежуточное ПО auth:api, по умолчанию это аутентификация на основе токенов, но я не вижу, чтобы вы добавляли заголовок токена Bearer.

Есть 2 возможных решения, которые я знаю.

  1. Если вы хотите продолжать использовать промежуточное ПО auth:api, запросите токен API и используйте его в своих запросах (https://laravel.com/docs/6.x/api-authentication), но было бы лучше переключиться на Laravel Паспорт
  2. Лично я бы использовал веб-аутентификацию для этого (на основе сеанса), после того, как вы войдете в систему, будет добавлен токен сеанса, и вам на самом деле не нужно много делать с это потому что он будет добавлен ко всем звонкам после этого
...