首页 > 学院 > 开发设计 > 正文

spring boot 中redis与cookie整合

2019-11-10 19:44:51
字体:
来源:转载
供稿:网友

在sPRing boot中整合redis

在已有的spring boot项目的pom中加入redis的依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency>

依赖注入后就可以在类中自动装配redis类

@Autowired private RedisTemplate redisTemplate;

redis中设置key value可以选择是否有失效时间

//设置有失效时间的redis //第三个参数设置失效时间数值,第四个参数设置时间单位 redisTemplate.opsForValue().set(key,value,tokenMaxAge, TimeUnit.SECONDS); //设置没有失效时间的redis redisTemplate.opsForValue().set(key,value);

对cookie进行封装

public class CookieUtil { /** * 设置cookie * @param response * @param name cookie名字 * @param value cookie值 * @param maxAge cookie生命周期 以秒为单位 */ public static void addCookie(HttpServletResponse response, String name, String value, int maxAge){ Cookie cookie = new Cookie(name,value); cookie.setPath("/"); if(maxAge>0) cookie.setMaxAge(maxAge); response.addCookie(cookie); } /** * 根据名字获取cookie * @param request * @param name cookie名字 * @return */ public static Cookie getCookieByName(HttpServletRequest request, String name){ Map<String,Cookie> cookieMap = ReadCookieMap(request); if(cookieMap.containsKey(name)){ Cookie cookie = (Cookie)cookieMap.get(name); return cookie; }else{ return null; } } /** * 将cookie封装到Map里面 * @param request * @return */ private static Map<String,Cookie> ReadCookieMap(HttpServletRequest request){ Map<String,Cookie> cookieMap = new HashMap<String,Cookie>(); Cookie[] cookies = request.getCookies(); if(null!=cookies){ for(Cookie cookie : cookies){ cookieMap.put(cookie.getName(), cookie); } } return cookieMap; }}

将cookie与redis整合起来

通过用户cookie把用户对应信息存储在redis中

//生成uuid存放在cookie String uuid =RandomUtil.getUUID(); //添加保存cookie CookieUtil.addCookie(response, Constant.Token,uuid,cookieMaxAge); //设置有失效时间的redis redisTemplate.opsForValue().set(uuid,value,tokenMaxAge, TimeUnit.SECONDS);

通过用户cookie把用户的信息从redis中取出

//取出cookie Cookie cookie= CookieUtil.getCookieByName(request,Constant.Token); if(cookie != null) { String token = cookie.getValue(); Object object = redisTemplate.opsForValue().get(token); if (object != null) { //返回redis中所存的内容 return (String )object; } else { return null; } }else { return null; }

常用场景:用户登陆,用户产生唯一的标示UUID,将UUID存入cookie,将所对应的信息内容放在UUID对应的redis的中,通过读取用户的UUID来获得用户信息。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表