【Java】springboot如何使用redis缓存

我正在做一个基于AOP和token(因为不会spring security)的多人在线的验证模块,在实现登录、登出功能。
我的想法是这样的:用户登录时生成一个token放进缓存,此后用户的所有请求都带上这个token,登出时就从缓存中删除token即可。很自然就想到用redis作为缓存,下面是部分代码。

依赖

【Java】springboot如何使用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

回到顶部