@
kslr 嗯,说实话那也是一个让我产生疑惑的讨论,当初看那个讨论的时候,大家围绕几个点说,我大概揣摩的是这样几个意见:
第一个就是您说的那个,session设计是和cookie相结合的,现在我们不用session了,所以设计个token来解决这个需求,所以其实是应景而生的类似的东西。这里面让我疑惑的就是基于这个需求设计出来的token机制,为什么就可以说自己是stateless而session却不是。
另外一个感觉比较有针对性的观点就是akfish说的那个“Session的状态是存储在服务器端,客户端只有session id;而Token的状态是存储在客户端”,这个可以说是一个很有力的理由说明token是stateless的,只需要解析token就能进行验证,服务器不需要存,这一切看起来就特别顺理成章了,直到我看到上面提到的第二个链接里面说到验证之后还是需要存到缓存(他建议用redis)中去,等到请求过来的时候进行校验,那这个样子还是一样要存这些用户信息在服务器上,并没有感觉和session的做法有根本上的差异。
所以感觉就是不明白到底token体系这一系列流程中,哪个关键点和session体系是截然不同的而导致它可以被称之为stateless。akfish给的资料相当有用,但是感觉离说服大家“token是无状态而session是有状态”还差一个关键的说明,而这个说明也是我一直找不到的,网上也有不少人像王垠说的就给一句“ RTFM”,让自己去看cookie和session,而Manual中没有作出很强力的证明,需要一些关键提点的地方,他们也不愿意给~
非常感谢您的回答,感觉咱们对token的设计意图理解有点共识,我就是还没找出它和session机制之间一个敢说自己是无状态而另一个并不是的理由,您要是知道这里面的原因还望帮帮忙