1. 程式人生 > >單點登入 使用redis模擬session實現單點登入

單點登入 使用redis模擬session實現單點登入

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{
		//沒有登入
		//