服务端的权鉴方式

  Http请求是无状态,为了对Http请求进行身份识别和权限认证。TokenSessionCookie都是实现的方式,本文旨在对这3中方式做分析比较。

Token特点

  • 客户端存储,服务端不存储;
  • 可扩展,无状态;
  • 有加密,防篡改;
  • 设置有效时间;
  • 存储用户信息;
  • 跨程序调用;
  • 解密后可以拿到用户数据;
  • 减少数据库查询的压力;
  • 可以多端使用;
  • 使用AOP注解解析Token;

Session特点

  • 服务端和客户端都得存储;
  • 每一次请求的刷新有效时间;
  • 及时销毁;
  • 使用缓存,增加服务端内存开销;
  • 可扩展性差;
  • 不会暴露用户数据

Cookie特点

  • 客户端本地存储,服务端不存储;
  • 浏览器Cookie空间有限;
  • 浏览器确保Cookie数据的安全;
  • 容易被恶意使用(Cookie欺骗);

Token的主动吊销

  保存Token的ID在数据库(日后统计数据也可以用到),并同步到缓存,每一次认证Token都判断该Token的ID是否被删除,删除则是已被吊销。但是这样做便舍弃了Token的优点,即Token存在状态了!这违背了Token的设计初衷,相当于SessionToken的子集。

今日诗词

作者信息