【问题标题】:Sanctum laravel is working fine on local, not in herokuSanctum laravel 在本地运行良好,而不是在 heroku
【发布时间】:2021-11-13 01:08:02
【问题描述】:

我已经使用身份验证系统“sanctum”开发了一个前端(react)和一个后端(php laravel)。在本地主机上一切正常。但我无法让它在 heroku 的生产环境中工作。

在本地环境中,我的 .env 是(提取):

SESSION_DRIVER=cookie
SANCTUM_STATEFUL_DOMAINS=localhost:3000,127.0.0.1:3000,localhost:8000,127.0.0.1:8000
SESSION_DOMAIN=localhost

如果我理解得很好,cookies 的正面和背面必须在同一个域上。由于我的背面和正面都托管在 heroku (herokuapp.com) 中,因此我有这些 .env :

但是使用这种配置,我总是得到响应 419 CSRF token mismatch

当然,我的 conf 不正确。但是我尝试了很多东西都没有成功。

编辑:

返回网址为:https://school-back-v2.herokuapp.com/

前面的网址是:https://react-protected-routes.herokuapp.com/

【问题讨论】:

  • 但是您的网站不是托管在 herokyapp.com 上,而是托管在 herokyapp 的子域上。如果 Heroku 上托管的任何应用都可以访问您用户的 cookie,那就太糟糕了
  • 我已经添加了背面和正面的网址。因此,在您看来,这些 url 中的配置应该是什么。环境?
  • 后端的 cookie 应该在域 school-back-v2.herokuapp.com 下。 Secure 应为 true,SameSite 应设置为 None

标签: laravel heroku laravel-sanctum


【解决方案1】:

如果您的网站放置在 Heroku 子域中,Heroku 会被浏览器列入使用 cookie 的黑名单。您可以使用 Heroku,但必须注册您自己的域并使用它,这样才能解决这个问题。 其他变体 - 使用令牌而不是 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    相关资源
    最近更新 更多