【发布时间】:2020-07-24 08:47:49
【问题描述】:
我有一个具有以下设置的应用程序:
Laravel
主机:appname.local:8000
环境变量:
- SESSION_DRIVER=数据库
- SESSION_LIFETIME=480
- SESSION_CONNECTION=mysql
- SESSION_DOMAIN=.appname.local
- SESSION_SECURE_COOKIE=false
- SESSION_COOKIE=appnameapi_session
- SANCTUM_STATEFUL_DOMAINS='.appname.local,localhost,127.0.0.1'
角度
主机:appname.local:4200
目前有效的方法:
- 我可以调用 Sanctum 的 csrf-cookie 端点,它在我的浏览器中设置 CSRF 令牌。
- 然后我可以调用我的 API 的登录端点来使用 Auth::attempt() 在我的 Laravel 应用程序中对用户进行身份验证。这会在会话表中创建一个新条目,如下所示
什么不起作用:
对受以下中间件保护的路由的后续请求:auth:sanctum 都会导致未经身份验证的响应。 HTTP 请求永远不会到达我的控制器。
但我可以在开发者控制台中看到正在发送 cookie。所以我不明白为什么 Sanctum 不接受身份验证
我已经学习了几个教程,但我似乎无法理解为什么 Laravel 的 Authenticate 中间件无法看到我已经对我的用户进行了身份验证。
有人知道我做错了什么吗?
【问题讨论】:
-
您是否仔细检查过所有设置是否正确,如SPA configuration 部分所示?
-
@DigitalDrifter 是的,我做到了。有状态配置采用我在问题中发布的环境变量“SANCTUM_STATEFUL_DOMAINS”的值。我将 sanctum 的中间件添加到 API 组,还按照文档中的建议完成了 CORS 和 Cookies 部分。
-
嗨。你设法解决这个问题吗?我也面临同样的问题。
-
@EdenWebStudio 不。我决定现在使用基于正常会话的身份验证。我计划在完成一些任务后再试一次。
-
@EdenWebStudio 你解决了吗?我也被困在那里:(
标签: php angular laravel laravel-sanctum