Laravel + React, использовать API с аутентификацией Laravel - PullRequest
0 голосов
/ 11 октября 2018

у нас есть проект Laravel с реакцией в качестве внешнего интерфейса.По сути, реакция находится внутри проекта laravel, для его добавления мы использовали php artisan preset react.

Поскольку для этого приложения требуется аутентификация, мы использовали настраиваемую аутентификацию laravel для предоставления доступа пользователям.Затем, когда аутентификация верна, мы перенаправляем пользователя на маршрут, которым будет управлять маршрутизатор реагировать и реагировать.Проблема в том, что нам нужно использовать наши конечные точки API из одного и того же приложения, и эти конечные точки ДОЛЖНЫ быть защищены.Laravel Auth там не работает, информация о сеансе отправляется не по каждому запросу.Я пробовал https://laravel.com/docs/5.7/authentication#stateless-http-basic-authentication, что, хотя это решает проблему, не удобно входить в систему, а затем, когда требуется использовать другой ресурс, выдается приглашение снова войти в систему.Также изменить маршруты API для веб-промежуточного программного обеспечения не вариант.

Кто-нибудь знает, как защитить маршруты API Laravel с помощью обычной аутентификации Laravel

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Решение было простым, даже если оно указано в документации , необходимые шаги должны быть разъяснены.

Нам необходимо:

  1. Добавить паспорт composer require laravel/passport
  2. Выполните миграцию php artisan migrate
  3. Установить паспорт php artisan passport:install

Четвертый шаг является более сложным.Нам нужно открыть наш файл модели User.php.И сначала нам нужно импортировать HasApiTokens и указать модели использовать его.

use Laravel\Passport\HasApiTokens;

class User extends Authenticatable

{

    use HasApiTokens, Notifiable;

    .......

}

Затем на нашем config/auth.php нам нужно изменить массив api и изменить драйвер на passport

'api' => [

    //for API authentication with Passport

    'driver' => 'passport',

    'provider' => 'users',

],

Затем на нашем app/Http/Kernel.php нам нужно добавить промежуточное ПО в массив $middlewareGroups в ключе web.

protected $middlewareGroups = [

    'web' => [

        ................

        //for API authentication with Passport

        \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,

    ],

Теперь мы можем использовать промежуточное ПО auth:api на нашемAPI-маршруты.

Route::middleware('auth:api')->group( function(){
    ...your routes here
});
0 голосов
/ 11 октября 2018

Маршруты, определенные в маршрутах / api.php, по умолчанию не сохраняют состояния.Они не используют сеансы.

Вы должны добавить необходимое промежуточное программное обеспечение, например StartSession::class и 'auth', если вы хотите использовать аутентифицированные сеансы.Это можно сделать либо в группе маршрутов, либо в массиве $middlewareGroups['api'] в app / Http / Kernel.php.

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