meh*_*ran 4 cookies laravel single-page-application laravel-sanctum
我在域 A 上有 spa,在域 BI 上有一个 Laravel 服务器,想使用 sainttum,但 cookie 只在同一个域中工作,所以你建议有什么办法解决这个问题吗?我不想在 sainttum 上使用基于令牌的 AUTH
是的,您可以使用授权代替 cookie
Laravel Sanctum 通过将用户 API 令牌存储在单个数据库表中并通过应包含有效 API 令牌的授权标头对传入的 HTTP 请求进行身份验证来提供此功能。
但这对于 cookie 来说是不可能的,并且不可扩展,因为会话存储在单个服务器中。如果您使用多个服务器。
例子 :
如果您在服务器 1 中存储会话,当您使用相同的 cookie 时,我会选择服务器 1 和服务器 2,而服务器 2 中的会话不知道服务器 2 意味着您是无效用户。
所以我的建议是使用 JWT 或 sainttum token 而不是 cookie。只需使用
$user->createToken($request->device_name)->plainTextToken;
Run Code Online (Sandbox Code Playgroud)
上面的代码生成令牌并存储在数据库中,您只需将相同的令牌发送到客户端进行验证即可。
要验证只需使用
Authorization: Bearer <token>
Run Code Online (Sandbox Code Playgroud)
你的路由守卫会自动检查令牌
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6008 次 |
| 最近记录: |