全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

spring mvc实现登录账号单浏览器登录

在很多web产品中都需要实现在同一时刻,只能允许一个账号同时只能在一个浏览器当中登录。通俗点讲就是当A账号在浏览器1当中登录了,此时在浏览器2中登录A账号。那么在浏览器1中的A账号将会被挤出去,当用户操作浏览器1的页面,页面会跳到登录页面,需要重新登录。那么我们怎么实现这样的功能呢?下面将给大家进行详细的介绍:

原理

用户A使用账号a在浏览器当中登录,然后用户B在另外一台电脑上的浏览器登录账号a,当用户B登录验证成功时,将会触发登录监听类,在监听类当中判断出账号a已经被用户A登录,就把用户A的账号a 踢出去,此时当用户A操作页面,页面就会跳转到登录页面。

代码实现

在实现过程中,用到LoginListenner监听类、login登录方法以及在web.xml中配置监听类

LoginListenner

当登录成功后,向session中放入登录成功的账号对象loginuser,触发LoginListenner中的attributeAdded事件,在这个事件中,我们判断存放账号和session对应关系的map中是否有当前登录的账号的session,如果有我们就把该session从map中移除,同时注销该session,然后把刚登录的账号和session放入map。下面是代码:

/** 
 * 
 * @ClassName: LoginListenner 
 * @Description: 登录监听类-处理同一时间只允许账号,单地点登录 
 * @author mr_smile2014 605051929@qq.com 
 * @date 2014年11月12日 下午2:23:41 
 * 
 */ 
public class LoginListenner implements HttpSessionAttributeListener { 
 /** 
 * 用于存放账号和session对应关系的map 
 */ 
 private Map<String, HttpSession> map = new HashMap<String, HttpSession>(); 
 
 /** 
 * 当向session中放入数据触发 
 */ 
 public void attributeAdded(HttpSessionBindingEvent event) { 
 String name = event.getName(); 
 
 if (name.equals("loginuser")) { 
  User user = (User) event.getValue(); 
  if (map.get(user.getUserName()) != null) { 
  HttpSession session = map.get(user.getUserName()); 
  session.removeAttribute(user.getUserName()); 
  session.invalidate(); 
  } 
  map.put(user.getUserName(), event.getSession()); 
 } 
 
 } 
 /** 
 * 当向session中移除数据触发 
 */ 
 public void attributeRemoved(HttpSessionBindingEvent event) { 
 String name = event.getName(); 
 
 if (name.equals("loginuser")) { 
  User user = (User) event.getValue(); 
  map.remove(user.getUserName()); 
 
 } 
 } 
 
 public void attributeReplaced(HttpSessionBindingEvent event) { 
 
 } 
 
 public Map<String, HttpSession> getMap() { 
 return map; 
 } 
 
 public void setMap(Map<String, HttpSession> map) { 
 this.map = map; 
 } 
 
} 

登录方法

对账号、密码、验证码进行判断和验证,验证通过后把对应的用户对象放入到session中,代码如下:

/** 
 * 登录 
 * 
 * @param userName 
 * @param passWord 
 * @param code 
 *  验证码 
 * @param type 
 *  登陆类型(商户,操作员) 
 * @param model 
 * @return 
 */ 
 @RequestMapping("/login") 
 public String login(String account, String passWord, String code, 
  Model model, HttpServletRequest request) { 
  //登录验证并返回登录成功用户对象 
  User user=loginResult(userPhone, passWord, code, request); 
  //把用户对象放入到session中,将会触发LoginListenner中的attributeAdded事件 
  request.getSession().setAttribute("loginuser", user); 
  
  } 

web.xml配置

把LoginListenner监听类,配置到web.xml文件中,这样对session的监听才生效。配置如下:

<!--一个用户只能在一个主机登录 --> 
 <listener> 
 <listener-class>com.test.listenner.LoginListenner</listener-class> 
</listener> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# spring  # mvc  # 登录  # 浏览器  # 详解springmvc控制登录用户session失效后跳转登录页面  # SpringMVC拦截器实现登录认证  # Spring MVC+mybatis实现注册登录功能  # SpringMVC 实现用户登录实例代码  # SpringMVC拦截器实现单点登录  # Java编程实现springMVC简单登录实例  # springmvc+spring+mybatis实现用户登录功能(上)  # springmvc下实现登录验证码功能示例  # Spring mvc 实现用户登录的方法(拦截器)  # spring MVC实现简单登录功能  # 将会  # 验证码  # 移除  # 就会  # 在这个  # 只能在  # 就把  # 中都  # 跳到  # 商户  # 一台电脑  # 大家多多  # 将给  # 踢出  # 只允许  # 跳转到  # 过程中  # 把该  # 下午  # 在同一 


相关文章: 如何通过VPS建站实现广告与增值服务盈利?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  相册网站制作软件,图片上的网址怎么复制?  中山网站制作网页,中山新生登记系统登记流程?  建站之星CMS五站合一模板配置与SEO优化指南  如何挑选优质建站一级代理提升网站排名?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  广东企业建站网站优化与SEO营销核心策略指南  大同网页,大同瑞慈医院官网?  用v-html解决Vue.js渲染中html标签不被解析的问题  深圳网站制作案例,网页的相关名词有哪些?  如何续费美橙建站之星域名及服务?  孙琪峥织梦建站教程如何优化数据库安全?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何快速登录WAP自助建站平台?  教学论文网站制作软件有哪些,写论文用什么软件 ?  高防服务器租用首荐平台,企业级优惠套餐快速部署  Swift中swift中的switch 语句  建站之星安装模板失败:服务器环境不兼容?  如何通过建站之星自助学习解决操作问题?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  建站之星北京办公室:智能建站系统与小程序生成方案解析  如何在Windows服务器上快速搭建网站?  电商平台网站制作流程,电商网站如何制作?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  建站主机无法访问?如何排查域名与服务器问题  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  江苏网站制作公司有哪些,江苏书法考级官方网站?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  制作网页的网站有哪些,电脑上怎么做网页?  深圳网站制作培训,深圳哪些招聘网站比较好?  建站之星上传入口如何快速找到?  ,有什么在线背英语单词效率比较高的网站?  如何在服务器上配置二级域名建站?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  再谈Python中的字符串与字符编码(推荐)  制作销售网站教学视频,销售网站有哪些?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  黑客如何通过漏洞一步步攻陷网站服务器?  html制作网站的步骤有哪些,iapp如何添加网页?  如何破解联通资金短缺导致的基站建设难题?  建站之星微信建站一键生成小程序+多端营销系统  如何做静态网页,sublimetext3.0制作静态网页?  建站VPS配置与SEO优化指南:关键词排名提升策略 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。