我正在使用 Sanctum 进行 SPA 身份验证。在我看到的几个示例中,人们在他们的 web.php
路由文件而不是 api.php
路由文件中创建身份验证路由(登录、注销、注册)。是否有一个原因?在文档中,我确实看到提到 here...
您可能想知道为什么我们建议您对路由进行身份验证 在应用程序的 routes/web.php 文件中使用 sanctum 守卫。 请记住,Sanctum 将首先尝试对传入请求进行身份验证 使用 Laravel 的典型会话身份验证 cookie。如果那个饼干 不存在则 Sanctum 将尝试验证请求 在请求的 Authorization 标头中使用令牌。此外, 使用 Sanctum 对所有请求进行身份验证可确保我们始终可以 在当前认证的用户实例上调用 tokenCan 方法
...但这是针对 API 令牌身份验证,而不是直接在 SPA 身份验证下。
是否有任何理由可以在 web.php
中更好地处理我的身份验证路由?
答案 0 :(得分:1)
好吧,在典型的 Laravel 应用程序中,您的 API 路由是无状态的,不会持久化会话;特别是他们没有启动会话中间件。
因此,如果您将这些路由放在 API 文件中,则基于 cookie 的身份验证将不起作用。
在您的 Web 文件中包含这些路由允许将这些特定路由包装在会话中,从而允许基于 cookie 的身份验证,然后在需要时回退到使用无状态授权标头。
我忘记了确切的词,但是当 SPA 通过 API 令牌属于同一域时,Taylor 非常喜欢使用基于 cookie 的身份验证。
但这应该可以解释原因。当然,如果您愿意,欢迎您更改此设置。