项目重构前

公司的项目以springcloud做微服务开发,那么多个微服务项目怎么保存登录状态呢?不可能会员项目、商城项目、患者项目都要跳转微服务端信登录一次。

之前考虑的是sso单点登录,采用开源的cas框架。架构图如下:

这样也解决了微信登录的回调url只能设置一个的问题。

项目重构后

在公司决定重构项目后,架构师指出微服务去session也是重构的一部分,使用JWT代替session有一些好处,我总结如下:

  1. 去session,减少服务端内存开销。
  2. 去sso单点登录,减少维护项目,减少代码量。
  3. 减化登录流程,减少跳转次数。
  4. 解决更新用户信息后,可能导致的各项目存储的session不一致的问题(当然这个问题可以通过redis统一存储session解决,使用JWT就减少了redis的开销)。
  5. 后期可以将JWT解密和权限校验放在SpringCloud的网关zuul中,进一步解耦微服务。
  6. 使用网关后,微服务可以完全做成无状态的服务。

另外,有点可惜的是之前的单点登录项目被废弃,白做了。

下一节介绍JWT在项目中的使用。