我正在 Build 一个带VueJS的第一方SPA,它向Laravel后端发出请求 . 该应用程序包括用户注册和登录,因此我尝试使用密码授权令牌对Passport使用OAuth来验证用户 .

这是我当前的登录流程:

  • 用户在SPA的登录表单上输入他的电子邮件/密码

  • POST请求被发送到我创建的/ api / login路由 . 此路由调用我创建的Laravel控制器,它使用我的client_id和client_secret向/ oauth / token发送POST请求(使用Guzzle)以获取访问令牌 . 如果识别出用户,则路由将access_token返回到SPA .

  • 经过身份验证的用户可以从SPA调用我受保护的API路由,它可以正常工作 . 每个请求在“承载...”授权头中发送access_token .

但我有几个问题,因为整个OAuth事情对我来说仍然有点模糊......

  • 首先,以前的工作流程是否正确且安全?

  • 我没有使用Laravel中包含的LoginController . 因此,当用户通过我的流登录时,他获得了一个访问令牌,并且能够通过auth:api中间件访问API路由,但是他没有像在标准的Laravel Web应用程序中那样进行身份验证(当我测试Auth时:: check(),我得'假') . 这可以吗 ?或者我是否还应该在生成access_token的同时通过标准身份验证登录已识别的用户?

  • 现在,我根本没有使用refresh_tokens ......我不知道在我的情况下处理这个问题的正确方法是什么 . 我是否必须将refresh_token与access_token一起传递给我的SPA并对其执行某些操作?现在我保留了默认提供的令牌的长期配置,Laravel文档说它们“永远不需要刷新”......

  • 为什么access_tokens和refresh_tokens在数据库中被标记为“已撤销”而不仅仅是已删除?如果它们没有被删除,那么表格可能会在一段时间后非常大并且如果应用程序有很多用户 . 我是否需要设置一些维护任务来删除过期或已撤销的令牌?

  • 上一个问题:我在我的SPA中安装了Laravel提供的Passport Vue组件,只是为了看看这对我是否有用 . 他们向这些路由发送请求:/ oauth / clients,/ oauth / tokens,/ oauth / personal-access-tokens和/ oauth / scopes . 但所有人都返回401错误(未经授权) . 然而,access_token仍在每个请求标头中 . 为什么这些请求失败而我的自定义API请求工作正常?

我希望我会得到明确的答案,它会帮助那些试图了解Passport的人!
谢谢 !