问题描述
我想使用 Nuxt.js 作为我的前端和 Laravel sanctum 作为我的后端身份验证提供程序。我应该如何在 Laravel 项目的 .env 文件中设置 SESSION_DOMAIN
键。
我还应该编辑 nuxt.config.js
文件中服务器对象部分的任何内容以使其正常工作吗?
解决方法
要与 Sanctum 合作,我们首先应该熟悉一些事情。我们必须在同一个域上使用我们的 SPA 和 API 后端,例如 domain.com 上的前端和 api.domain.com 上的 API。我们不能在 domain.com 上设置前端,在 another-domain.com 上设置后端 (API)。客户端必须能够在发送到后端的每个请求中包含 cookie。
会话域是没有协议和端口的前端域名。
当你在本地工作时,你必须将其设置为 localhost,当你在服务器上工作时,你必须设置域名。
请按照nuxt-laravel-sanctum-auth的这个例子
,当您将 Sanctum 与 SPA(例如 Nuxt)一起使用时,您可以选择使用 API 或 cookies/sessions。如果您的应用程序是同一顶级域上的第一方应用程序,Laravel 建议使用基于 cookie 的方法,以便您可以利用 CSRF 保护。 Axios 和 Angular Http 库开箱即用地处理 CSRF,因此您不必太担心处理请求标头 [1]。
在您的情况下,我假设您的应用程序是第一方并且在同一个顶级域中。因此,您的 SESSION_DOMAIN
值将是例如 .domain.com
。此外,您还需要设置 SANCTUM_STATEFUL_DOMAINS=domain.com
。通常,您的 SESSION_DOMAIN
将只包含您的应用程序使用的主域,而 SANCTUM_STATEFUL_DOMAINS
将包含您的前端使用的所有子域(如果有)。