如何保证web网站的单点登录

admin/2020-04-04/ 分类:英语口语/阅读:
? 我们的网站在办理用户登录上通俗都需求一个账号只能有一团体登录,那如何才华完成呢?这里我引见一种我在项目中应用的方法。用ServletContext完成。 起首我把思路剖析一下: 1、用 ...

  ? 我们的网站在办理用户登录上通俗都需求一个账号只能有一团体登录,那如何才华完成呢?这里我引见一种我在项目中应用的方法。用ServletContext完成。

  起首我把思路剖析一下:

  1、用户登录胜利以后,将此sessionid保管到ServletContext,在ServletContext中KEY值应用用户名,VALUE值应用以后的sessionid。

  2、登录以后用户每次恳求时,在阻挡器中起首辨别session可否过时,假设没有过时辨别ServletContext中的sessionid可否是以后的sessionid,假设不是,说明该账号在其他中央登录。

  1、用户登录以后将用户信息customerInfo放入SESSION中

  ? request.getSession(true).setAttribute("customerInfo", customerInfo);

  2、将登录胜利客户的SESSIONID保管到高低文ServletContext中

  因为高低文ServletContext是全部web项目共享的对象,所以每个恳求都一个

  ? String sessionId=session.getId();

  ? ServletContext servletContext=request.getServletContext();

  ? servletContext.setAttribute(loginName, sessionId);

  3、在阻挡器中辨别session可否过时,ServletContext的sessionid可否曾经被他人更新

   CustomerInfoDto customerInfo=(CustomerInfoDto) session.getAttribute("customerInfo");

   ? ?if(customerInfo==null) {

   ? ? ?StringBuffer json=new StringBuffer();

   ? ? ?String requestType=(String) request.getHeader("X-Requested-With");

   ? ? ?if (requestType !=null && requestType.equals("XMLHttpRequest")) {

   ? ? ? ?response.setContentType("application/json;charset=UTF-8");

   ? ? ? ?json.append("{"resultCode":"1","resultMsg":"长时间未操作,请从新登录"}"); ? ? ? ?

   ? ? ? ?PrintWriter pw=response.getWriter();? ?

   ? ? ? ?pw.print(json.toString());

   ? ? ? ?pw.close();

   ? }else{ ? ? ? ?

   ? ? ? ?response.sendRedirect(request.getContextPath() + "/login");

   ? }

   ? ? ?return false;

   ? ?}else{

   ? ? ?ServletContext servletContext=request.getServletContext();

   ? ? ?String loginSessionID=(String) servletContext.getAttribute(customerInfo.getLoginName());

   ? ? ?if(session.getId().equals(loginSessionID)){

   ? ? ? ?return true;

   ? ? ?}else{

   ? ? ? ?String requestType=(String) request.getHeader("X-Requested-With");

   ? ? ? ?if (requestType !=null && requestType.equals("XMLHttpRequest")) {

   ? ? ? ? ?response.setContentType("application/json;charset=UTF-8"); ? ? ?

   ? ? ? ? ?PrintWriter pw=response.getWriter();? ?

   ? ? ? ? ?pw.print("{"resultCode":"1","resultMsg":"该账号已在其它中央登录!"}");

   ? ? ? ? ?pw.close();

阅读:

推荐文章

Recommend article
bet手机
微信二维码扫一扫
关注微信公众号
联系QQ:329435596 邮箱:329435596@qq.com Power by DedeCms
二维码
意见反馈 二维码