Redis(十二)redis实现session跨域缓存(附JWT存储)
发布日期:2021-05-14 13:57:33 浏览次数:20 分类:精选文章

本文共 3469 字,大约阅读时间需要 11 分钟。

������

���������WEB���������������������������������������������������������������������session������������������������������������������������������������������������ID���������������������������������������������������������������Nginx������������������������������������������������������������������������������session���������������������������������

������������������������������������Redis������JWT������������������������

Redis������JWT

Json Web Token������������������cookie���������������������������������������JWT���������������������������������

private static String getToken(String account) {
Date now = new Date();
String key = "cbry_blog";
JWTCreator.Builder builder = JWT.create();
return JWT.create()
.withIssuer("cbry")
.withIssuedAt(now)
.withExpiresAt(new Date(now.getTime() + 60*60*1000))
.withClaim("account", account)
.sign(Algorithm.HMAC256(key));
}
private static String decodeToken(String token) {
DecodedJWT decodedJWT = JWT.decode(token);
if (new Date().getTime() > decodedJWT.getExpiresAt().getTime()) {
return "token������������";
} else {
return "token������������account���" + decodedJWT.getClaim("account").asString();
}
}
public static void main(String[] args) {
String token = getToken("cbry101");
System.out.println(token);
Jedis jedis = JedisPoolDemo.initJedisPool().getResource();
jedis.setex("jwt", 3600, token);
System.err.println("���������redis���������token���������" + decodeToken(jedis.get("jwt")));
}

cookie

���Spring������������������request���response������������������������������������cookie���

Redis������Session

���Spring������������session������������HttpServletRequest.getSession()������������������������������������session���������Redis���������������������������������������

@RequestMapping("/filter")
public String toIndex() {
System.err.println("������controller");
return "index";
}
@RequestMapping("/sessionTest")
public void sessionTest(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession();
System.err.println("���������sessionId������" + session.getId());
Jedis jedis = JedisPoolDemo.initJedisPool().getResource();
jedis.hset("session","sessionId", session.getId());
jedis.hset("session","userName", "cbry");
jedis.expire("session", 600);
}
@RequestMapping("/isLogin")
public void isLoginTest(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession();
Jedis jedis = JedisPoolDemo.initJedisPool().getResource();
String sessionIdFromRedis = jedis.hget("session", "sessionId");
String userName = jedis.hget("session", "userName");
if (session.getId().equals(sessionIdFromRedis)) {
System.out.println("������������������������������" + userName);
} else {
System.err.println("error������������������������������");
}
}

������

���������������������������������session������������������������������������������������������������������������sessionId���������������Redis������������������������������������

���������������������������

���������������������������������������������session���������������������������������������Redis������������������������������������������������������

������

������������������������������������������������������������������������������������������������������������������seudostored sessions������������������������������������������������Redis���exist������������sessionId������������������

上一篇:SprinBoot配置拦截器和拦截情况分析
下一篇:Redis(九)Redis的过期时间操作以及部分常用命令

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月30日 05时43分17秒