laravel - SPA 和外部用户的相同 API 路由
问题描述
Laravel 8 与Sanctum。
我计划为 SPA 和外部用户使用相同的 API 路由。问题是 Sanctum 需要将EnsureFrontendRequestsAreStateful
中间件添加到“api”中间件组中,这使得我的 API “有状态”。对于 SPA 来说这很好,但我想让它保持“无状态”,以便通过令牌身份验证进行外部调用。
最简单的解决方案是使用不同的中间件组将 SPA 和外部路由分开。没那么优雅!请提供更好的建议:)
UPD:决定拆分路由
路线/api.php
Route::middleware('auth:sanctum')->as('api.')->group(function () {
require 'resources.php';
});
路线/水疗中心.php
Route::middleware('auth:sanctum')->as('spa.')->group(function () {
require 'resources.php';
});
路线/资源.php
Route::apiResources([
'products' => 'Api\ProductController',
]);
App\Providers\RouteServiceProvider
public function boot()
{
$this->routes(function () {
....
Route::prefix('spa')
->middleware('spa')
->namespace($this->namespace)
->group(base_path('routes/spa.php'));
});
}
应用\Http\内核
protected $middlewareGroups = [
....
// Stateless, external calls
'api' => [
'throttle:api',
SubstituteBindings::class,
],
// SPA, stateful, internal use
'spa' => [
EnsureFrontendRequestsAreStateful::class,
'throttle:api',
'SubstituteBindings::class,
],
];
解决方案
推荐阅读
- php - 解决 php 中的嵌套条件(错误)级别
- python - 在 python 中使用多处理编写微分方程的输出时出现问题
- android - 如何从外部为 android 的模块设置 buildConfigField?
- python - 如何将抓取的数据分配给具有相同类的两个不同变量?
- node.js - 节点版本冲突
- cassandra - 将数据从一个 cassandra 集群传输到另一个集群的最佳方式
- amazon-s3 - S3 签名文件链接的安全问题
- c# - 视觉工作室 2008 + 甲骨文 18c
- keras - 使用 Keras 的句子级编码
- java - Apache ant javah 任务不适用于 jdk 10+