首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否应该使用JWT返回身份验证端点中的用户数据?

是否应该使用JWT返回身份验证端点中的用户数据?
EN

Software Engineering用户
提问于 2020-11-26 22:48:10
回答 2查看 2.1K关注 0票数 2

我实现了一个auth端点,它接受电子邮件和密码,并返回一个JWT令牌。在JWT内部,有一个包含用户ID的有效负载。从REST/JWT标准的角度来看,这些方法中有哪些是重要的?

  1. 返回令牌,并让客户端在回调时请求/users/user_id资源,并使用解码的user_id和令牌
  2. 为了方便客户机,从/auth端点返回带有令牌的整个用户对象。

(我的问题是实现/库无关,以及api设计模式)

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2020-11-26 23:36:17

是/不是。

终点是功能。从这个角度看,他们做什么并不重要,只要客户意识到这就是将要发生的事情,并且乐于处理输出/结果。

因此,如果您编写了唯一的客户机,并且有一个连续调用的六个操作序列,那么将它们折叠为一个执行所有操作的调用可能是有意义的。

但是,如果您不编写唯一的客户端,那么这种复杂的端点很有可能会使他们的生活更加艰难。这就像试图得到一份文件,并必须核实你是否有医疗保险。最好有较小的简洁的操作,让这些其他客户选择和选择的方式和时间。

中间立场是通过选择加入来提供少量的公共链。

  • /auth ->只是JWT令牌
  • /auth?include=user -> JWT令牌+用户详细信息请

至于休息,是的,这很重要。

REST的两大优点是,服务器不必保持连接状态,而中介体可以缓存结果以分发给它们的受众,以减少服务器上的总体负载。

JWT令牌不适合这个模型。你不想让它们被缓存,你不想让它们共享。

不过,其他数据可能完全可以缓存。也许不是机密的用户数据,但是如果这些细节是公开的用户信息,就可以了。

这两种类型的混合消除了REST系统的好处之一。不是世界末日,但如果你想获得可伸缩性,这是一个反模式。

票数 2
EN

Software Engineering用户

发布于 2020-11-26 23:40:12

如果您真的想遵循REST模式,您应该只返回用户ID,然后将客户端请求用户数据放在一个单独的端点中(每个端点只负责一件事情)。根据用例的不同,这对客户端来说可能是乏味的/烦人的。

如果您认为每次用户在进行身份验证后都需要/需要他们自己的信息,那么您最好通过授权调用返回该信息。

对于我自己的应用程序,为了方便起见,我通常只在身份验证期间返回用户信息,并减少对服务器的调用。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/419384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档