Как выполнить Auth :: check () пользователя на Laravel с помощью вызовов API - PullRequest
0 голосов
/ 02 июля 2018

Я использую VueJS в своем интерфейсе, поэтому у меня есть вызов API где-то в коде интерфейса:

let products = axios.get('api/products');


А потом в маршруты / api.php : -

Routes::get('products', 'ProductsController@index');


в методе индекса ProductsController :

public function index () {

    if ( Auth::check() ) {
        $user = Auth::user();
        return $user->products;
    }
    // return 'You don't have any products right now!';
}

Метод index всегда будет возвращать ноль, даже если пользователь вошел в систему!
Так как же аутентифицировать пользователей в этом случае при использовании вызовов API?

Ответы [ 3 ]

0 голосов
/ 02 июля 2018

Верните данные через json и снова декодируйте их в своем интерфейсе. Может это поможет?

0 голосов
/ 02 июля 2018

Убедитесь, что вы отправляете токен CSRF, где-то в вашем файле bootstrap.js, у вас должно быть что-то вроде этого. Также убедитесь, что у вас есть метка csrf где-нибудь в метатеге

let token = document.head.querySelector('meta[name="csrf-token"]');

    if (token) {
        window.axios.defaults.headers.common = {
            'X-CSRF-TOKEN': Laravel.csrfToken,
            'X-Requested-With': 'XMLHttpRequest'
        };
    } else {
        console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
    }
0 голосов
/ 02 июля 2018

Отправляете ли вы токен авторизации, потому что когда мы пишем API, нам нужно иметь дело с токеном аутентификации, а не с Auth :: check (). Вам необходимо отправить токен авторизации с идентификатором пользователя во время вызова API и убедиться, что данные продолжаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...