shiro和JWT

今天在某社交软件上,有个人问我:shiro和JWT有什么区别,我们怎么选择?我想了想,这么跟他解释了一下:

shiro和JWT是典型的有状态登陆无状态登陆的代表,所谓的有状态和无状态,就是看信息存在哪儿,存在服务器端,就叫做有状态,存在客户端,就叫无状态。

有状态就是说把信息存储在session中,因为session是存在服务端的,也就是有状态的,无状态就是把信息存在cookie中,cookie是存在客户端的,也就是无状态。

无状态的好处很明显,不存在服务端,可以减少服务端的压力。

这里不过多介绍shiro,主要介绍一下JWT。

JWT是一个轻量级的鉴权框架,可以实现无状态登陆,一般结合RSA使用,RSA是一种非对称加密技术,分为公钥和私钥,公钥和私钥可以互相解密对方加密的东西,公钥可以发出去很多,但是私钥只能有一份,此处也不过多讲解RSA,之后会单独对RSA进行说明。

拿用户登录模块来说,用户登陆时,服务端首先要去数据库来判断这个用户是否正确,如果正确,那就用RSA生成的私钥进行加密,生成一个token,将token返回给用户,用户下次访问服务的时候,带着这个token,如果服务端用公钥能够解析成功,那就说明当前申请是OK的,没啥问题,解析不了,说明不是这个公钥对应的私钥加密形成的token,那就不让它登陆。

token分为三部分:头,载荷,签名

token的头是固定的,不作说明;载荷就是我们存进去的部分,这部分是基于base64加密的,所以千万不要把重要信息存进去,有点技术功底的拦截到token,都能解密出来,载荷一般就放一些标识类的,不是特别重要的东西;签名就是私钥生成的一个判断身份的东西,如果不做签名,都来请求,系统咋知道谁是谁。

当然,还涉及到了token有效期啊,失效啊这些的,JWT生成的token默认有效期是三十分钟,并且,JWT无法使已经生成的token失效,所以这时候需要我们自己想办法去做这个,此处涉及到业务逻辑,也不过多讲解,这次不是分享业务的。

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值