通过 API 登录后 return 做什么?

What to return after login via API?

我正在创建一个 API 服务器,稍后我将使用该服务器运行一个移动应用程序。即使在搜索几个小时后,我也没有看到任何与用户流和 returned 数据相关的 API 最佳实践的参考。

我的问题是 API 的登录响应是否应该 return 带有刷新令牌的个人访问令牌以及用户信息?或者我应该只 return 令牌并进行另一个 API 调用以获取用户信息。

我可以按照我的想法去做,但我正在努力学习最佳实践,这样我以后就不必调整很多东西了。

我需要与我的问题相关的建议和好的参考资料。

谢谢。

这取决于您使用什么进行身份验证。如果您正在使用像 Laravel PassportJWT 这样的库,您可以拥有 return 访问权限的令牌端点token、refresh token、有效期和token类型(Bearer)。然后,您可以拥有一个经过身份验证的端点,该端点将用于根据请求中传递的令牌获取用户的配置文件 header.

但是,如果您浏览这些库的文档,在大多数情况下都允许 手动生成 令牌。您可以在将 return 令牌以及用户配置文件 Passport Manually Generate Token.

的自定义端点中使用它

如果您使用的是 JWT,您还可以在令牌本身中嵌入一些用户属性。客户端可以从 JWT 本身获取配置文件信息,而无需往返于服务器。 Passport ADD Profile to JWT

如果您使用自定义方式处理身份验证,则可以在同一响应中传递令牌和用户配置文件。

最后,由您决定什么最适合您。

您看过 OpenID Connect 了吗?它是 OAuth 2.0 之上的另一层,提供用户身份验证(OAuth 2.0 不涉及身份验证,它只是假设它发生)和查找有关当前用户的信息的方法。 它具有 ID_token 的概念,除了 OAuth 访问令牌外,还提供了一个 /userinfo 端点来检索有关用户的信息。 您 可以 将用户信息放入您的访问令牌中,但安全最佳做法是不允许从 JavaScript 访问您的访问令牌(即使用 HTTP_ONLY cookies存储您的访问令牌)。