gpt4 book ai didi

php - Laravel 在所有 api 路由中使用 Web 身份验证重定向到主页

转载 作者:行者123 更新时间:2023-12-02 07:18:33 24 4
gpt4 key购买 nike

我想对所有 api 路由使用 Web 身份验证。我创建了中间件,这就是它的样子

Route::group(['middleware' => ['auth:web'], 'prefix' => 'v1',], function ($router) {
Route::apiResource('subscriptions', 'Api\SubscriptionController');
Route::post('subscriptions/{id}/resend', 'Api\SubscriptionController@resend')->name('resend');
Route::post('subscriptions/{id}/grace', 'Api\SubscriptionController@addGrace')->name('grace');
Route::apiResource('accounts', 'Api\SocialMediaAccountController');
Route::post('accounts/{id}/reset', 'Api\SocialMediaAccountController@reset');
Route::apiResource('customers', 'Api\CustomerController');
});

当我已经登录并尝试向 api 路由发出请求时,它会将我重定向到主页。我怎样才能解决这个问题 ?

这是 config/auth.php
 'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],

'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],

// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],

如果我已经登录,我不希望重定向 api 路由。我只想进行 Web 授权并继续执行相同的请求。

最佳答案

只需两个更新即可限制您的 api 路由,以要求您的网络身份验证 session 发出 api 请求。

  • api 更新中间件至 web .

  • # File: app/Providers/RouteServiceProvider.php

    protected function mapApiRoutes()
    {
    Route::prefix('api')
    ->middleware('web') # <-- CHANGE to 'web'
    ->namespace($this->namespace."\\API")
    ->group(base_path('routes/api.php'));

    }
  • auth:api 更新中间件至 auth:web (或简单地 auth)

  • # routes/api.php
    Route::middleware('auth:web')->get('/user', function (Request $request) {
    return $request->user();
    });

    关于php - Laravel 在所有 api 路由中使用 Web 身份验证重定向到主页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52166907/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com