关于使用Laravel Passport的许多问题

时间:2017-09-10 07:37:21

标签: laravel oauth laravel-passport

我正在使用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(),我得到了'false')。这可以吗 ?或者我是否还应该在生成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的人! 谢谢!

0 个答案:

没有答案