java 单点登录系统 浏览器js获取本地cookie失败

Only_Joe 发布于 2016/12/09 16:04
阅读 748
收藏 0
单点登录服务器 登录页面。登录成功时会向浏览器cookie写入token  名字“TT_TOKEN”。
 


	@Override
	public TaotaoResult userLogin(String username, String password,
			HttpServletRequest request, HttpServletResponse response) {
		
		TbUserExample example = new TbUserExample();
		Criteria criteria = example.createCriteria();
		criteria.andUsernameEqualTo(username);
		List<TbUser> list = userMapper.selectByExample(example);
		//如果没有此用户名
		if (null == list || list.size() == 0) {
			return TaotaoResult.build(400, "用户名或密码错误");
		}
		TbUser user = list.get(0);
		//比对密码
		if (!DigestUtils.md5DigestAsHex(password.getBytes()).equals(user.getPassword())) {
			return TaotaoResult.build(400, "用户名或密码错误");
		}
		//生成token
		String token = UUID.randomUUID().toString();
		//保存用户之前,把用户对象中的密码清空。
		user.setPassword(null);
		//把用户信息写入redis
		jedisClient.set(REDIS_USER_SESSION_KEY + ":" + token, JsonUtils.objectToJson(user));
		//设置session的过期时间
		jedisClient.expire(REDIS_USER_SESSION_KEY + ":" + token, SSO_SESSION_EXPIRE);
		
		//添加写cookie的逻辑,cookie的有效期是关闭浏览器就失效。
		CookieUtils.setCookie(request, response, "TT_TOKEN", token);
		
		//返回token
		return TaotaoResult.ok(token);
	}



浏览器能够查看到写入的token。



登录成功后跳转到 前台门户系统网站,然后首页加载完页面后使用ajax 根据本地cookie中的token 获取用户信息。js代码是footer.jsp中引用的, 每个页面都包含有footer.jsp。<jsp:include page="commons/footer.jsp" />
第一次登录能成功跳转到系统首页 执行js获取到用户信息,但是当点击其他页面时候,应该是也会执行js代码根据token获取用户信息,但是js要刷新那个页面才会执行,而且获取不到本地cookie中的token 。也就获取不到用户信息。问题就出在这里:
js代码


var TT = TAOTAO = {
	checkLogin : function(){
		var _ticket = $.cookie("TT_TOKEN");
		if(!_ticket){
			return ;
		}
		$.ajax({
			url : "http://localhost:8884/user/token/" + _ticket,
			dataType : "jsonp",
			type : "GET",
			success : function(data){
				if(data.status == 200){
					var username = data.data.username;
					var html = username + ",欢迎来到淘淘!<a href=\"http://localhost:8884/user/logout.html\" class=\"link-logout\">[退出]</a>";
					$("#loginbar").html(html);
				}
			}
		});
	}
}

$(function(){
	// 查看是否已经登录,如果已经登录查询登录信息
	TT.checkLogin();
});







加载中
返回顶部
顶部