【问题标题】:Laravel Sanctum - Store cookies on localhost subdomainLaravel Sanctum - 在 localhost 子域上存储 cookie
【发布时间】:2021-10-19 10:01:42
【问题描述】:

我正在开发一个 web 应用程序 (Laravel/Vue),每个组织都有一个子域(companyone.mydomain.com、companytwo.mydomain.com、...)

作为身份验证系统,我使用带有 cookie 的 Laravel Sanctum。在本地主机上设置 cookie 时,在本地使用子域时不起作用。

我的后端在localhost:8000 上运行,而前端在localhost:8080 上运行。出于 cors 的原因,我在 vue.config.js

中添加了代理属性
module.exports = {
    devServer: {
        disableHostCheck: true,
        proxy: 'http://localhost:8000',
    },
};

我更改了/etc/hosts 文件,以便可以在本地模拟子域

127.0.0.1  localhost
127.0.0.1  mydomain.com
127.0.0.1  companyone.mydomain.com
127.0.0.1  companytwo.mydomain.com

在后端,我在.env 文件中添加了以下几行(并重新启动了php artisan serve 脚本)

SESSION_DOMAIN=.mydomain.com
SANCTUM_STATEFUL_DOMAINS=mydomain.com

在 Authcontroller 中,我像这样返回 cookie

$token = $user->createToken(Str::random(10))->plainTextToken;
$cookie = cookie('mydomain_api', $token, 60 * 24);
        
return response([
   'token' => $token,
   'user' => new AuthResource($user)
], 200)->withCookie($cookie);

cookie设置如下

$domain = null
$secure = true
$httpOnly = true
$sameSite = 'None'

当调用登录函数时,我在浏览器中收到这样的 cookie

但应用程序 -> Cookies 保持为空

请求头

向 api 发送另一个请求时,不添加任何 cookie。 如何获取 Cookies 存储中的 cookie?

[编辑 1] 将后端的域硬编码为 mydomain.com 时,我在浏览器中收到以下错误

【问题讨论】:

  • 嗯。为什么第一张图片中的域是“localhost”?
  • @user202729 我不知道,但是在将域硬编码为 mydomain.com 时出现错误。见[编辑 1]
  • 看来你应该在浏览器中访问带有companyone.mydomain.com 的网站?你已经这样做了吗……
  • @user202729 这就是我正在做的。所有的请求都是从companyone.mydomain.com发送的,实际上是从companyone.mydomain.com:8080发送的
  • 奇怪?可能是因为只有一个点。 stackoverflow.com/a/1188145/5267751

标签: laravel vue.js cookies laravel-sanctum


【解决方案1】:

更新您的.env

SANCTUM_STATEFUL_DOMAINS=localhost:8080,mydomain.com:8080,companyone.mydomain.com:8080,companytwo.mydomain.com:8080,::1,localhost:8080,localhost:3000

【讨论】:

    【解决方案2】:

    尝试在您的 .htaccess 文件中添加以下行

    # Handle Authorization Header
    # RewriteCond %{HTTP:Authorization} .
    # RewriteRule .* - [E=Authorization:%{HTTP:Authorization}]
    

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 2021-09-26
      • 2021-09-04
      • 2021-04-05
      • 2021-07-19
      • 2020-09-02
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多