原理:就是在一个网站的根地址里添加一个cookie,cookie的value就是用户登录的sessionid,将这个sessioid作为redis的key,用户的信息作为value,存储在redis里,这样该网站所有的子域名都可以获取到这个cookie,然后根据cookie里的sessionid去redis里读取用户的信息。
@RequestMapping(value = "login.do",method = RequestMethod.POST)
@ResponseBody
public ServerResponse<User> login(String username, String password, HttpSession session, HttpServletResponse httpServletResponse){
ServerResponse<User> response = iUserService.login(username,password);
if(response.isSuccess()){
CookieUtil.writeLoginToken(httpServletResponse,session.getId());
RedisShardedPoolUtil.setEx(session.getId(), JsonUtil.obj2String(response.getData()),Const.RedisCacheExtime.REDIS_SESSION_EXTIME);
}
return response;
}

本文介绍了单点登录的原理,通过在根域名下设置携带sessionid的cookie,利用Redis存储session信息。当用户访问子域名时,通过cookie检索Redis中的用户信息,实现跨域身份验证。
6万+

被折叠的 条评论
为什么被折叠?



