首先我们要理解有状态请求和无状态请求。
此处的“状态”表示服务器端是否保存用户的状态。
例如,cookie和session有状态。 因为在服务器端保存会话的状态(。
rest API是无状态的。 因为我们只要每次携带JWT进行API呼叫就可以了。 服务器端只需验证JWT是否合法,不需要保存用户状态。
【请注意,服务器端不保存任何用户状态并不等于不保存任何信息】
有状态的坏处:
服务器端存储的大量数据。 然后,如果对一个session只能从头到尾访问的同一服务不同,就结束了。无状态的好处:
这是存在状态不好的地方的反衬。
但是我们在服务器端不存任何客户端数据 怎么能认定client携带的JWT是对的呢?
因为不保存客户的数据并不是什么都不保存。
在微服务架构中 流程如下:
我们把token的发行和验证交给了被认可的服务器。
每次用户携带token许可证时,都会使用public key读取token签名并确定有效,然后从payload获取用户信息。
所以,我们的授权中心只需要保存一个由token public key处理的字符段。 通过验证后,可以阅读token的用户信息。 所以,我们的服务器端可以不存储用户信息。 因为客户端每次都会带来。
当然,上图可以这样把验证的步骤放在各个微服务器中。
微服务批量登录认证该怎么办? JWT?