【问题标题】:is there a way to have sanctum on diffrent domains有没有办法在不同的领域拥有圣所
【发布时间】:2021-02-19 00:07:57
【问题描述】:

我在域 A 上有 spa,在域 B 上有一个 Laravel 服务器,我想使用 sanctum,但 cookie 只在相同的域中工作,所以你建议有什么办法解决这个问题?而且我不想在 sanctum 上使用令牌库 AUTH

【问题讨论】:

    标签: laravel cookies single-page-application laravel-sanctum


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      是的,您可以使用授权代替 cookie

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

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

      例子:

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

      所以我的建议是使用 JWT 或 sanctum 令牌代替 cookie。 只需使用

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

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

      验证只需使用

      Authorization: Bearer <token>
      

      你的路由守卫会自动检查令牌

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-24
        • 1970-01-01
        • 2018-10-26
        • 1970-01-01
        相关资源
        最近更新 更多