关于jwt的一点思考:希望大佬们给一些建议

springcloud 搭建 分布式系统,在搭建权限系统时,选择用jwt作为无状态,前后端分离做保证。

实现方案:

1.通过shiro spring-security都能很好的实现restfull风格的后端接口Api;

2.通过集成jwt,可以很好的生成token,并用于鉴权或认证判断;

3.jwt其实就是存储了一些信息,通过后端解析,来判断是否登录,是否有权限访问,通过全局处理可以很好的解决问题;

那么问题来了:

如果jwt只存储【用户信息】,通过后端解析,查询该用户的角色+权限信息,可以判断认证和鉴权,这样token也就比较短,存储【用户信息+角色信息】,通过后端解析,获取用户权限信息,token相对比较长;如果存储【用户信息+角色信息+权限信息】,token可能会特别长,对于大型api应用,超过4k也很可能。有没有更好的解决方案。

只存储【用户信息或加角色信息】,token 是相对短的,角色增长速度一般不会线性,未来业务也不会太过膨胀,当时对于分布式应用,要么到微服务后端会不断通过RPC访问权限系统获取 鉴权及登录认证,哪怕做到网关层面也是一样的。这是弊端。当然,可以通过中间件redis分布式缓存的方式,缓存角色信息或权限信息,让微服务的访问鉴权认证都去redis中拿,但依赖中间件还是不太美好。

如果存储【用户+角色+权限】信息,弊端是随api的增长信息不断膨胀,导致api访问传输压力。好处也有就是不管访问哪个微服务api都不会对权限系统的造成压力,因为压根不需要不断的去访问权限系统,因为信息够用,自我解析就能满足。当然坏处也是显而易见的。

有没有特别完美的方案呢?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值