Java服务端采用Session的缓存oauth2.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去实现用户权限的控制操作,感谢你的翻阅,如有疑问可以留言一起讨论!