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的同学不知道,可以自己查下)。


默认路径


启动命令:./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的数据库配置:


redis.properties

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

3.sring中applicationContext.xml的配置:


redis连接池配置


模版和业务类注入配置


创建token的方法(供参考)


删除方法


解析方法

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

本人菜鸟,不喜勿喷。

☀️☀️☀️

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • “莹,过来,我终于可以拥抱你了” 一个叫莹的女孩在森林迷了路,遇到一个带面具的叫阿金的少年 阿金愿意带莹走出森林,...
    木户阅读 4,227评论 8 13
  • 现代人每天不是对着电脑就是对着手机,很多人都有脊柱的问题。我每次去发廊洗头的时候,洗头工总是说:姐、你的脖子好硬啊...
    惠芝阅读 929评论 2 2
  • 说明 Go本身提供了一套轻量级的测试框架。单元测试源文件的命名规则如下:在需要测试的包下面创建以"_test"结尾...
    剑雪封侯之阅读 1,339评论 0 0
  • 近些年来,“女汉子”这个词变得特别的火。 扛一桶矿泉水上楼,被称为女汉子。 生病之后一个人独自去医院,被称为女汉子...
    艾美花花酱阅读 4,855评论 0 2