Laravel SPA和外部用户的API路线相同
拉雷维尔8号,带 我计划对SPA和外部用户使用相同的API路径。问题是Sanctum要求将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
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使用令牌授权,但我需要为每个用户颁发令牌。创建您的令牌库登录页面,我只是这样使用的