美文网首页mysql我爱编程
jwt基于Spring及Redis的鉴权

jwt基于Spring及Redis的鉴权

作者: Hush____ | 来源:发表于2018-03-26 22:17 被阅读637次

    首先,介绍下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的方法(供参考) 删除方法 解析方法

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

    本人菜鸟,不喜勿喷。

    ☀️☀️☀️

    相关文章

      网友评论

        本文标题:jwt基于Spring及Redis的鉴权

        本文链接:https://www.haomeiwen.com/subject/dpkdcftx.html