Laravel SPA和外部用户的API路线相同

Laravel SPA和外部用户的API路线相同,laravel,laravel-sanctum,Laravel,Laravel Sanctum,拉雷维尔8号,带 我计划对SPA和外部用户使用相同的API路径。问题是Sanctum要求将EnsureRefontendRequestsRestateful中间件添加到“api”中间件组中,这使我的api成为“有状态的”。对于SPA来说,这很好,但我希望对于带有令牌身份验证的外部调用保持“无状态” 最简单的解决方案是使用不同的中间件组分离SPA和外部路由。不那么优雅!请提出更好的建议:) UPD:决定拆分路线 routes/api.php Route::middleware('auth:sanc

拉雷维尔8号,带

我计划对SPA和外部用户使用相同的API路径。问题是Sanctum要求将
EnsureRefontendRequestsRestateful
中间件添加到“api”中间件组中,这使我的api成为“有状态的”。对于SPA来说,这很好,但我希望对于带有令牌身份验证的外部调用保持“无状态”

最简单的解决方案是使用不同的中间件组分离SPA和外部路由。不那么优雅!请提出更好的建议:)

UPD:决定拆分路线

routes/api.php

Route::middleware('auth:sanctum')->as('api.')->group(function () {
    require 'resources.php';
});
routes/spa.php

Route::middleware('auth:sanctum')->as('spa.')->group(function () {
    require 'resources.php';
});
routes/resources.php

Route::apiResources([
    'products' => 'Api\ProductController',
]);
应用程序\提供商\路由服务提供商

public function boot()
{
    $this->routes(function () {

       ....

        Route::prefix('spa')
            ->middleware('spa')
            ->namespace($this->namespace)
            ->group(base_path('routes/spa.php'));
    });
}
App\Http\Kernel

    protected $middlewareGroups = [

      ....
        
        // Stateless, external calls
        'api' => [
            'throttle:api',
            SubstituteBindings::class,
        ],

        // SPA, stateful, internal use
        'spa' => [
            EnsureFrontendRequestsAreStateful::class,
            'throttle:api',
            'SubstituteBindings::class,
        ],
    ];

您可以在SPA Vuejsure中使用相同的api。但是Sancrum SPA认证使API有状态,而外部用户的Restful必须是无状态的。我可以对SPA和Rest使用令牌授权,但我需要为每个用户颁发令牌。创建我使用的令牌基础登录页面只有在SPA VueJSure中才能使用相同的api。但是Sancrum SPA认证使API有状态,而外部用户的Restful必须是无状态的。我可以对SPA和Rest使用令牌授权,但我需要为每个用户颁发令牌。创建您的令牌库登录页面,我只是这样使用的