【Java】springboot如何使用redis缓存
我正在做一个基于AOP和token(因为不会spring security)的多人在线的验证模块,在实现登录、登出功能。
我的想法是这样的:用户登录时生成一个token放进缓存,此后用户的所有请求都带上这个token,登出时就从缓存中删除token即可。很自然就想到用redis作为缓存,下面是部分代码。
依赖
验证请求的切面的伪代码
@Before("execution(* com.example.securitydemo.controller.*.*(..))&&args(request,..)")public void validateRequest(HttpServletRequest request) {
if (是需要保护的请求) {
从请求头中获得token
根据用户名向缓存查询对应的token
比较两个token,如果相等,请求合法
}
}
向缓存中根据用户名查询token的代码
@Cacheable(value = "loginList",key = "#id")public String readLoginCache(String id) {
return null;
}
登录时向缓存中存入token的代码
@CachePut(key = "#user.id", value = "loginList")public String generateToken(User user) {
HashMap<String, Object> map = new HashMap<>();
map.put("userName", user.getUserName());
map.put("roles", user.getUroles());
String jwt = Jwts.builder()
.setClaims(map)
.setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
.signWith(SignatureAlgorithm.HS256, SECRET)
.compact();
return TOKEN_PREFIX + jwt;
}
疑问
从debug的结果来看,存入token是没有问题的,问题出在查询token的代码中,但是我是在不知道该怎么向redis缓存中查询数据,也没有找到相关资料,希望高手可以指点一二,谢谢!
回答
以上是 【Java】springboot如何使用redis缓存 的全部内容, 来源链接: utcz.com/a/87614.html