需要将浏览器中的cookie删除,删除缓存中的数据
@RequestMapping("/logout")
public String logout(HttpServletRequest request,HttpServletResponse response){
//1.如何获取JT_TICKET值???
Cookie[] cookies = request.getCookies();
String token=null;
for (Cookie cookie : cookies) {
if("JT_TICKET".equals(cookie.getName())){
token=cookie.getValue();
System.out.println("cookie"+token);
break;
}
}
if(!StringUtils.isEmpty(token))
{
//表示token数据不为空
jedisCluster.del(token);
//删除cookie
Cookie cookie=new Cookie("JT_TICKET", "");
//设置路径 -- > 对谁有效
cookie.setPath("/");
cookie.setMaxAge(0);
response.addCookie(cookie);
}
//重定向到商城主页
return "redirect:/index.html";
}
package com.jt.web.controller;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.jt.common.po.User;
import com.jt.common.vo.SysResult;
import com.jt.web.service.UserService;
import redis.clients.jedis.JedisCluster;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@Autowired
private JedisCluster jedisCluster;
@RequestMapping("/{module}")
public String module(@PathVariable String module) {
return module;
}
// service/user/doRegister
@RequestMapping("/doRegister")
@ResponseBody
public SysResult saveUser(User user) {
try {
userService.saveUser(user);
return SysResult.oK();
} catch (Exception e) {
e.printStackTrace();
}
return SysResult.build(201, "用户注册失败");
}
/**
* 实现用户登录
* @param user
* @return
* 核心:将用户token秘钥写入到浏览器cookie中
* cookie.setMaxAge(7*3600*24);//7天超时,1小时3600s,1天24h
* cookie.setMaxAge(0);//立即删除
* cookie.setMaxAge(-1);//当前会话关闭后删除
*/
@RequestMapping("/doLogin")
@ResponseBody
public SysResult findUserByUP(User user,HttpServletResponse response){
try {
String token=userService.findUserByUP(user);
if(StringUtils.isEmpty(token)){
return SysResult.build(201, "用户名或密码错误");
}
//如果程序执行到这里表示token一定不为null,将数据写入Cookie
Cookie cookie=new Cookie("JT_TICKET", token);
cookie.setMaxAge(7*3600*24);//7天超时,1小时3600s,1天24h
cookie.setPath("/"); //表示Cookie的所有者
response.addCookie(cookie);//将Cookie写入浏览器
return SysResult.oK();
} catch (Exception e) {
e.printStackTrace();
}
return SysResult.build(201, "用户名或密码错误");
}
/**
* 1.通过JT_TICKET获取token数据
* 2.根据token删除redis的缓存数据
* 3.将cookie删除
* @return
*/
@RequestMapping("/logout")
public String logout(HttpServletRequest request,HttpServletResponse response){
//1.如何获取JT_TICKET值???
Cookie[] cookies = request.getCookies();
String token=null;
for (Cookie cookie : cookies) {
if("JT_TICKET".equals(cookie.getName())){
token=cookie.getValue();
System.out.println("cookie"+token);
break;
}
}
if(!StringUtils.isEmpty(token))
{
//表示token数据不为空
jedisCluster.del(token);
//删除cookie
Cookie cookie=new Cookie("JT_TICKET", "");
//设置路径 -- > 对谁有效
cookie.setPath("/");
cookie.setMaxAge(0);
response.addCookie(cookie);
}
//重定向到商城主页
return "redirect:/index.html";
}
}




注销前
[root@localhost sentinel]# redis-cli -p 7002
127.0.0.1:7002> keys *
1) "774c94e901eb9fdde7219a6d880267f1"
2) "ITEM_CAT_162"
3) "ITEM_CAT_0"
127.0.0.1:7002> get 774c94e901eb9fdde7219a6d880267f1
"{\"created\":1515924386000,\"updated\":1515924386000,\"id\":7,\"username\":\"admin123\",\"password\":\"a66abb5684c45962d887564f08346e8d\",\"phone\":\"17600336886\",\"email\":\"17600336886\"}"
注销后
[root@localhost sentinel]# redis-cli -p 7002
127.0.0.1:7002> keys *
1) "ITEM_CAT_162"
2) "ITEM_CAT_0"