有没有一种方法可以在不同的域上拥有圣地



我在域A上有spa,在域B上有Laravel服务器。我想使用santum,但cookie只在相同的域中工作,所以你建议有什么方法可以解决这个问题吗?我不想在圣地上使用代币库AUTH

是的,您可以使用授权而不是cookie

Laravel Sanctum通过将用户API令牌存储在单个数据库表中并通过授权头验证传入的HTTP请求来提供此功能,授权头应包含有效的API令牌。

但是使用cookie是不可能的,并且不可扩展,因为会话存储在单个服务器中。如果您使用多个服务器。

示例:

如果您在服务器1中存储会话,而您在服务器2中使用相同的cookie,而服务器2中的会话不知道服务器2意味着您是无效用户,则我选择服务器1和服务器2。

所以我的建议是使用JWT或圣地代币代替cookie。只需使用

$user->createToken($request->device_name)->plainTextToken;

上面的代码生成了令牌并存储在数据库中,您只需将相同的令牌发送到客户端进行验证。

要验证,只需使用

Authorization: Bearer <token>

您的路线警卫会自动检查代币

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {

});

不,使用跨站点cookie是没有办法的。这是一个安全功能。您必须实现自己的身份验证或使用相同的TLD。

最新更新