采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,这里关于cookie以及设置失效时间,我做了一个简单的测试,首先登录进入到to_list后,在redis中会生成两个key,每次刷新当前页面都会生成一个key。我觉得一个用户在redis中只存在一个key。如果失效(删除),就会重新生成一个key。在有效期内,每次登录应该用的还是同一个cookie,也就是redis中对应的某一个key。老师,你什么看?
所以这里是老师写的有问题吗..按照老师这样写 确实每次一刷新都会新增一个token
应该要怎么处理
不设置cookie的有效期,让它永远有效,给redis中的token设置个有效期,如果cookie中的token过期 重新生成
你说的对 只有登陆成功的时候才需要生成token
//更新缓存时间 private void addCookie(String token,HttpServletResponse response,User user){ Cookie cookie = new Cookie(COOKIE_NAME_TOKEN,token); cookie.setMaxAge(TokenKey.tokenKey.expireSeconds()); response.addCookie(cookie); if (redisService.get(TokenKey.tokenKey,token,User.class)==null){ redisService.set(TokenKey.tokenKey,token,user); cookie.setPath("/"); }else { redisService.setExpire(TokenKey.tokenKey,token);//更新缓存时间 } } 老师改成这样你觉得呢 //重新设置过期时间 public <T> boolean setExpire(KeyPrefix prefix,String key){ Jedis jedis = null; try{ jedis = jedisPool.getResource(); String realKey = prefix.getPrefix()+key; int sec = prefix.expireSeconds(); jedis.expire(realKey,sec); return true; }finally { if (jedis!=null) { jedis.close(); } } }
cookie可以不设置有效期,redis的key每次重新set一下就好了
为什么呀 cookie是会自动延期的吗
登录后可查看更多问答,登录/注册
各种缓存/JSR303参数检
1.3k 17
1.4k 17
1.1k 17
1.1k 16
1.1k 13