学成在线-第16天-讲义- Spring Security Oauth2 JWT六

认证接口开发 
4.1 需求分析 
用户登录的流程图如下:
 
执行流程: 
1、用户登录,请求认证服务 
2、认证服务认证通过,生成jwt令牌,将jwt令牌及相关信息写入Redis,并且将身份令牌写入cookie 
3、用户访问资源页面,带着cookie到网关 
4、网关从cookie获取token,并查询Redis校验token,如果token不存在则拒绝访问,否则放行 
5、用户退出,请求认证服务,清除redis中的token,并且删除cookie中的token 
使用redis存储用户的身份令牌有以下作用: 
1、实现用户退出注销功能,服务端清除令牌后,即使客户端请求携带token也是无效的。 
2、由于jwt令牌过长,不宜存储在cookie中,所以将jwt令牌存储在redis,由客户端请求服务端获取并在客户端存 
储。

4.2 Redis配置 
4.2.1 安装Redis 
1、安装Redis服务 
下载Windows版本的redishttps://github.com/MicrosoftArchive/redis/tags 
下载Redis-x64-3.2.100版本,解压Redis-x64-3.2.100.zip 
进入cmd命令行,进入Redis-x64-3.2.100目录。 
运行:

redis‐server redis.windows.conf


 
注册为服务:

redis‐server ‐‐service‐install redis.windows‐service.conf ‐‐loglevel verbose

刷新服务,会看到多了一个redis服务。
 

常用的redis服务命令如下: 
进入redis安装目录: 
卸载服务:redis-server.exe --service-uninstall 
开启服务:redis-server.exe --service-start 
停止服务:redis-server.exe --service-stop 
2redis-desktop-manager 
下载windows版本的redis客户端:https://redisdesktop.com/download 
下载redis-desktop-manager-0.9.2.806.exe 
安装后启动redis客户端: 
配置redis链接:

 
 
4.2.2 redis连接配置 
在认证服务的application.yml文件中添加如下配置:

spring:
application:
name: xc‐service‐ucenter‐auth
redis:
host: ${REDIS_HOST:127.0.0.1}
port: ${REDIS_PORT:6379}
timeout: 5000 #连接超时 毫秒
jedis:
pool:
maxActive: 3
maxIdle: 3
minIdle: 1
maxWait: ‐1 #连接池最大等行时间 ‐1没有限制

4.2.3 测试

@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTest {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
public void testRedis(){
//定义key
String key = "user_token:9734b68f‐cf5e‐456f‐9bd6‐df578c711390";
//定义Map
Map<String,String> mapValue = new HashMap<>();
mapValue.put("id","101");
mapValue.put("username","itcast");
String value = JSON.toJSONString(mapValue);
//向redis中存储字符串
stringRedisTemplate.boundValueOps(key).set(value,60, TimeUnit.SECONDS);
//读取过期时间,已过期返回‐2
Long expire = stringRedisTemplate.getExpire(key);
//根据key获取value
String s = stringRedisTemplate.opsForValue().get(key);
System.out.println(s);
}
}
发布了835 篇原创文章 · 获赞 152 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/qq_40208605/article/details/104393404
今日推荐