auth: web не может определить, где работает auth: api, с тем же кодом - PullRequest
0 голосов
/ 21 октября 2019

Мне нужно аутентифицировать свои веб-маршруты, и я решил использовать это промежуточное ПО:

Route::group(['middleware' => ['auth:api']], function () {
    Route::get('test', 'MainController@home');
    Route::get('test1', 'MainController@home1');
});

Я отредактировал файл config/auth.php, чтобы использовать мою защиту:

....
'guards' => [
    'web' => [
        'driver' => 'oauth2',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'oauth2',
        'provider' => 'users',
        'hash' => false,
    ],
],
...

Я определил oauth2в файле AuthServiceProvider вот так:

Auth::extend('oauth2', function ($app, $name, array $config) {
    // Return an instance of Illuminate\Contracts\Auth\Guard ...
    return new OAuth2Guard(app(TokenUserProvider::class), $app->make('request'));
});

Этот код хорошо работает. Промежуточное программное обеспечение auth:api выполняется, и пользователь проверяется.

Теперь, так как мне нужны сеансы, я хотел использовать промежуточное программное обеспечение auth:web с тем же точным кодом. Но если я использую его, пользователь не проходит проверку подлинности, и он перенаправляется на страницу входа.

Я не знаю, почему. Охранники web и api используют один и тот же драйвер.

1 Ответ

0 голосов
/ 21 октября 2019

Laravel предоставляет отдельный файл для маршрутов API. routes/api.php Вы можете разделить маршруты веб-и API-маршрутов. все маршруты API будут иметь префикс «api». После разделения маршрутов просто включите промежуточное программное обеспечение «web»

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