V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  mitu9527  ›  全部回复第 8 页 / 共 19 页
回复总数  379
1 ... 4  5  6  7  8  9  10  11  12  13 ... 19  
2020-12-24 12:25:39 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@lihongming 你说到 AWS 的情况,我猜测可能是 AWS 引入了 RBAC 模型,并且角色与会话绑定了,才会引发不得不这么做。

比如,我有一个账户,即属于运营人员角色,又属于某种管理人员角色,但运行时角色只能二选一,即角色运行时互斥,那就要这么做了。此时,如果我有两个浏览器,都用这个账号登陆,一个浏览器登陆后选择运营人员,一个浏览器登陆后选择管理人员,那用这种把 JWT 当作客户端会话的方法就很合适。

但是反过来,不在 JWT 中放入角色,也可以轻松实现同样的目的。比如服务端通过一个接口返回可选的角色,客户端展现,然后用户选择,客户端再把用户的选择(即所谓的“状态”)保存在客户端本地存储中,后面每次请求带上该角色(状态)即可。

这两种方法,都把状态存在了客户端而不是服务端,这是是没问题的。但区别是一个是服务端发起的保存和读取操作,另外一个是客户端自己发起保存和读取操作。很类似,但我个人确实觉得服务端发起和保存和读取操作,比较别扭,可能是我思维有点固化,没转变过来吧。
2020-12-24 11:17:08 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@libook 我和你的观点整体上是类似的。
2020-12-24 11:07:51 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@icyalala 我没有否定,也不敢轻易否定,但是确实有质疑,质疑一下没毛病吧。
2020-12-24 11:05:31 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@acmore 状态放在客户端没毛病,但是状态不应该“由服务端生成,然后放在客户端”,应该“由客户端生成,然后放在客户端”。
2020-12-24 11:02:55 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@kop1989 我当然知道要有状态,我也知道放在服务端不对,应该放在客户端,但是我觉得这些状态不应该由服务端生成和读取,应该由客户端自己生成本次交互过程的状态并存在本地存储,然后客户端发起请求时,从本地存储中取出来直接告知服务端,而不是“我把交互状态都发给你了,你自己看着选用吧”。
2020-12-24 10:09:22 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@msg7086 那就是了,完全是服务端在把控的东西(只不过存在客户端),还能说服务端“无状态”么?
2020-12-24 10:00:49 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@msg7086 你说的我基本上都明白,但我的意思是“状态”不应该由服务端生成(做决定),服务端每次只返回数据给客户端就可以了(服务端根本不在乎之前请求发生过什么),客户端接收到数据之后,要自己决定要把什么“状态”缓存在客户端本地缓存中,然后下次发起 api 调用时,自己决定该从客户端本地存储中读取哪些必须数据并和请求一起发给服务端。不是服务端决定该把什么“状态”缓存在客户端。
2020-12-24 09:55:20 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@kop1989 问题就是,现在我认为在 REST 下,两次请求就不应该用会话这个概念来贯通,应该是是毫无关系才对。
2020-12-24 09:46:03 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@wangritian 我现在认为如果要遵循 REST,会话数据就不应该由服务端生成,然后放在客户端,然后还绞尽脑汁想着怎么才能不泄露、篡改、伪造和重放。
2020-12-24 09:41:56 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@fengchang 我只是觉得,客户端会话的状态是有服务端生成,最后也是由服务端读取使用,这种不能算“无状态”。

我觉得客户端自主生成状态,然后放在自己的本地存储中,然后再根据下次调用的 api 需要什么数据,再从本地存储中取出来,这才是“无状态”,服务端根本就不知道“状态”为何物,只知道客户端会把我要的数据都发给我,我直接用就行了。

服务端不知道“状态”为何物 != 服务端不在乎“状态”存在哪里。
2020-12-24 09:29:45 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@Bromine0x23 这两段实际上我都看了,只不过觉得意思是一样的,所以我就引用了一段。所以你的意思是把交互状态放到“客户端会话”中算是“无状态”了?
2020-12-24 09:26:38 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@ysc3839 那就是说,你认为只要服务端无会话状态,比如把会话状态存在客户端,就算 REST 的“无状态”了,对么?

我个人的想法是,这些会话数据由服务端产生,最终也是由服务端读取使用,本质上还是服务端在用,只不过被存放在客户端上了而已。

如果客户端自己把交互过程中的状态存在自己的本地存储上,然后在向服务端发送请求时,自己从本地存储中选用服务端需要的状态,再和请求一起发给服务端,这才是真正的“无状态”。客户端自己存放,自己选取使用,服务端只做接收方。
2020-12-24 09:16:08 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@lihongming 你说的这种用法,如果只是登陆状态这一种状态,我觉得没问题,但是如果把 token 中塞满以前保存在服务端会话中的那些会话数据呢?就比如说用户权限数据,以前经常是保存在服务端会话中的,如果现在把它挪到客户端合适么?
2020-12-24 09:11:28 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@airfling 嗯,这个肯定没错,不过有些人认为还可以把比如用户 id 、用户权限等会话数据放到 token 中,虽然很方便,但这时候 token 就变成客户端会话了,我觉得这种做法不合适。
2020-12-24 09:09:08 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@whileFalse 我个人反对把用户 ID 和用户权限放在 JWT 里面,因为这时候 JWT 本质上就是我说的客户端会话而已,不过好多人都说这么做可以,我质疑的就是这种用法。

我觉得正确的用法应该大概是这样,客户端提交用户名和密码向服务端申请 JWT,JWT 的 payload 中只包含一个令牌和一个过期时间,后续请求都把 JWT 传到服务端,服务端验证通过 JWT 后就通过 payload 中的令牌找到通过认证的用户即可。至于一次交互内之前产生的临时数据或者说状态,应该存放在客户端的本地存储中,只要发起请求时,把服务端需要的参数从本地存储中拿出来放到请求中即可。
2020-12-24 00:57:11 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@GeruzoniAnsasu 所以你的观点是?算还是不算?
2020-12-24 00:53:49 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@fengchang 理由是?你不觉得都已经有会话状态了,还能说再说是“无状态”么?
2020-12-24 00:47:02 +08:00
回复了 mitu9527 创建的主题 程序员 关于 REST 中的“无状态”的一个疑问。
@Jooooooooo 我也不想纠结这个问题,只不过看到好多人的想法和自己不同,连原论文都和自己的想法不同,三人成虎啊,我担心自己是不是哪里没搞明白,所以才来提问。
2020-12-12 10:15:12 +08:00
回复了 liqinliqin 创建的主题 PHP 深圳 PHP 后台开发工程师
深圳,这要求,1.5-2 万比较合适吧。
2020-12-07 17:18:48 +08:00
回复了 mitu9527 创建的主题 程序员 求助: YApi 无法上传文件的问题怎么解决?
@g00001 谢谢,叫我去试试。
1 ... 4  5  6  7  8  9  10  11  12  13 ... 19  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3586 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 17ms · UTC 10:44 · PVG 18:44 · LAX 03:44 · JFK 06:44
Developed with CodeLauncher
♥ Do have faith in what you're doing.