订阅博客
收藏博客
微博分享
QQ空间分享

Java服务端采用Session的缓存oauth2.0授权用户信息

频道:技术分享 标签:菜鸟程序员cookie和session 时间:2016年03月03日 浏览:3704次 评论:0条

前面有讲到session和cookie的一些简单的区别和比较,我们继续为java在服务端如何对session的操作留下笔记,这里以用户的登陆和退出操作为实用场景,简单讲解session的建立、清空等操作!

①用户登陆获取用户信息并放置到session中,在项目中简单代码如下:

/**
	 * @Description: 用户oauth授权登录
	 * @param @param request
	 * @param @param response
	 * @param @param code
	 * @param @param state
	 * @param @return
	 * @author dapengniao
	 * @date 2016年1月13日 下午3:59:14
	 */
	@RequestMapping("login")
	public ModelAndView UserOAuthLogin(ModelAndView view,
			HttpServletRequest request, HttpServletResponse response,
			@RequestParam(value = "code", required = false) String code,
			@RequestParam(value = "state", required = false) String state) {
		OauthCode_GetUseInfo oauth = new OauthCode_GetUseInfo(code);
		try {
			UserInfo userinfos = oauth.getUserInfo();//通过公用方法用code获取用户基本信息
			request.getSession().setAttribute("unionid",userinfos.getUnionid()); //将用户unionid缓存到session
			request.getSession().setAttribute("petname",
					userinfos.getNickname());   //将昵称缓存到session
			view.setViewName("index");
			return view;
		} catch (Exception e) {
			logger.error(e, e);
			return view;
		}

	}

将用户相关信息放入到session中,服务端就可以根据session中是否存在用户信息给与用户不同的权限,这个功能我们在下面将采用filter(过滤器)实现详细讨论!

②用户在页面做退出操作的时候需要将用户session消息清空,以方便控制用户权限,简单代码如下:

	/**
	 * @Description: 用户登录退出
	 * @param @param request   
	 * @author dapengniao
	 * @date 2016年1月22日 下午12:03:16
	 */
	@RequestMapping("loginout")
	public void userLoginOut(HttpServletRequest request){
		request.getSession().invalidate();
	}

这里将用户信息清空,用户再次访问的时候就会需要用户再次登录才能进行下一步操作!

下篇我们将采用filter和session去实现用户权限的控制操作,感谢你的翻阅,如有疑问可以留言一起讨论!

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信