單點登入 使用redis模擬session實現單點登入
阿新 • • 發佈:2019-05-02
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{
//沒有登入
//