redis就是一个公共的服务器,所有的子系统都能连接redis进行访问
1. 登入
在登入模块实现用户名密码的校验之后,通过uuid或者雪花算法生成id,存入redis,并返回一个cookie {currUser:#{id}}
public void login(String username,password){
User user = userService.findUser(username,password);
if(user != null){
//登陆成功,将用户信息存入redis
redisTemplate.boundHashOps("loginUser").put(当前用户ID,user);
Cookie cookie = new Cookie("currUser",当前用户ID);
cookie.setPath("/");
cookie.setDomain("baidu.com"); //www.baidu.com item.baidu.com cart.baidu.com
// response响应浏览器
}
}
2. 认证
每一个子系统都能引入一个拦截器(可以自己写一个springMVC拦截器),判断当前是否登陆
{
Cookie[] cookies = request.getCookies();
//循环查找currUser名字的cookie
cookie cookie = findCookie("currUser");
if(cookie != null){
User user = redisTemplate.boundHashOps("loginUser").get(cookie.getValue());
if(user != null){
//已经登陆
//....
}else{
//用户失效
//.....
}
}else{
//没有登入
//......
}
}