jwt基于Spring及Redis的鉴权

首先,介绍下jwt(json web token)。

jwt包括3个部分:

Header (头部)、Payload (负载)、Signature (签名),其实token就可以理解为一个身份验证的令牌、票据。

1⃣️header ='{"alg":"HS256","typ":"JWT"}'  其中 alg表示该令牌的加密方式,type不用管。

2⃣️Payload负载部分 就是具体的认证信息,通过修改这部分的内容来控制认证信息如用户权限等。除了一些保留字段exp(过期时间)、aud、iss等外,使用方法跟普通Json一样。

3⃣️Signature 就是密钥。

token =encodeBase64(header) +'.'+ encodeBase64(payload) +'.'+encodeBase64(signature)

令牌尾部拼接上base64url编码的签名,就是token了。

其次,介绍下redis。

redis是一个高性能的key-value数据库,性能极高,读取很快。

特点1⃣️ Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

特点2⃣️ Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

特点3⃣️ Redis支持数据的备份,即master-slave模式的数据备份。

本地,可以安装一个redis的库玩玩。去官网直接对照你的系统下载安装包,我下的是dmg的。直接安装完成好后。默认路径是:/usr/local/bin(win的同学不知道,可以自己查下)。


10120429-682cdbbadcd676fa.png
默认路径


10120429-fb20262193f38db0.png
启动命令:./redis-server &

必要的几个命令:

#检测后台进程是否存在          ps -ef |grep redis

#检测6379端口是否在监听     netstat -lntp | grep 6379

#进入redis数据库的命令行     ./redis-cli 

查询所有的key值                     127.0.0.1:6379> keys * (empty list or set) 

进入正文,基于spring的token+redis身份验证。

1⃣️该模式下的身份验证过程:

=>用户通过登录请求提交用户名和密码,服务端验证通过后生成一个Token与该用户进行关联,并将Token返回给客户端。

=>客户端在接下来的请求中都会携带Token,服务端通过解析Token检查登录状态。

=>当用户退出登录、其他终端登录同一账号(被顶号)、长时间未进行操作时Token会失效,这时用户需要重新登录。

2⃣️实现示例:

1.添加必要的jar包,java-jwt、jedis、jjwt、spring-data-redis

2.添加redis的数据库配置:


10120429-4ff770a021673a78.png
redis.properties

注:有集群需求的,可以配置redis_host2、redis_host3、redis_host4等等。

3.sring中applicationContext.xml的配置:


10120429-4dfb08b45bd69cc5.png
redis连接池配置


10120429-76fd93c02613c6d8.png
模版和业务类注入配置


10120429-bb097602772f588f.png
创建token的方法(供参考)


10120429-17f2edf8980fa1fe.png
删除方法


10120429-3a4983927e68b1d7.png
解析方法

注:由于刚开始写简书,不是很会格式话,贴代码很乱,需要源码的私我,就行了。

本人菜鸟,不喜勿喷。

☀️☀️☀️

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值