客户端第一次需要使用用户名/密码登录。为将来的请求返回一个 JWT token 。 token 将有一个用户标识,以便服务器可以从数据库中获取用户的资源。
我遇到的问题是客户端需要形成请求 URL 来更新其资源,比方说 POST/users/{userid}。我应该如何获取客户端的用户标识?我无法访问存储在 httpOnly 安全 cookie 中的 JWT token 。我应该以某种方式将用户标识存储在客户端上吗?以便它可以将其用于 URL?
最佳答案
我现在明白你的问题了。你害怕失去 RESTFUL api 的一些优势,一个独特的资源定位器,
我经常有一组 URI,这些 URI 以指示操作是针对当前经过身份验证的用户的路径开头。
/current/profile
/current/blog_posts
在这种情况下,我将用户从服务器上的请求上下文中拉出来,我可以通过解析 JWT token 来获得它。
当我想对其他用户进行操作时,我会改用标识符
/{{user_id}}/profile
/{{user_id}}/blog_posts
我不确定这是否是严格的 RESTFUL,但它确实为我的 API 用户提供了一个稳定且可发现的 URI。我已经在许多项目和团队中使用了这种模式,没有任何提示。
如果你真的必须得到一个用户标识符,我会想到两个想法:
- 返回 user_id 和 jwt token 。
- 进行额外的 API 调用 从服务器获取 user_id,然后将其用于所有 随后的电话。
哦,我想到了另一个选择。更改您对 user_id 的概念并改用用户名(您已经拥有)。
关于REST api - 客户端应如何向其用户资源的请求 URL 提供用户 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37054048/