在此之前也看了很多同一帐号异地登录的,有的是采用后登录者必须等待前登录者释放后才可以登录,我的项目中要用到想qq那样可以踢出,我具体的做法如下:

LoginServelt.java 做登录使用

OnlineUserListener.java 做session超时清理工作

LogValidata.java 做权限验证

logout.jsp做退出

LoginServelt.java public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

HttpSession session=request.getSession();

String username=request.getParameter("username");

String password=request.getParameter("password");

ServletContext sc=this.getServletContext();

String sessionId=session.getId();

String path= request.getContextPath();

Map onlineUserMap=(Map)sc.getAttribute("onlineUserMap");

//如果是首个用户登录,onlineUserMap为空,new一个

if(onlineUserMap==null){

onlineUserMap=new HashMap();

}

if(username!=null || password!=null){

onlineUserMap.put(username.trim(), sessionId);

sc.setAttribute("onlineUserMap",onlineUserMap);

//设置username,因为这个唯一的,作为key

session.setAttribute("username", username);

response.sendRedirect(path+"/success.jsp");

}else{

response.sendRedirect(path+"/index.jsp");

}

}

OnlineUserListener.java

public class OnlineUserListener implements HttpSessionListener {

public void sessionCreated(HttpSessionEvent event) {

}

public void sessionDestroyed(HttpSessionEvent event) {

HttpSession session = event.getSession();

Map onlineUserMap=(Map)session.getServletContext().getAttribute("onlineUserMap");

if(onlineUserMap!=null){

onlineUserMap.remove(session.getId());

session.getServletContext().setAttribute("onlineUserMap", onlineUserMap);

}

}

}

LogValidata.java

public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {

HttpServletRequest request=(HttpServletRequest)arg0;

HttpServletResponse response=(HttpServletResponse)arg1;

ServletContext sc=request.getSession().getServletContext();

String username=(String)request.getSession().getAttribute("username"); Map onlineUserMap=(Map) sc.getAttribute("onlineUserMap");

String sessionId=request.getSession().getId();

String path= request.getContextPath();

//onlineUserMap==null 说明还没有用户登录过

//username==null 说明该用户超时或未登录

if(onlineUserMap!=null && username!=null ){

//获取sessionId String id=(String) onlineUserMap.get(username);

if(id!=null && id.trim().equals(sessionId)){

//取得sessionId与当前相等,说明此用户在使用状态 arg2.doFilter(request,response);

}else{

//说明已经被提出

response.setCharacterEncoding("gb2312");

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("");

out.flush();

out.close();

} }else{

//说明未登录

response.setCharacterEncoding("gb2312");

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("");

out.flush();

out.close();

}

}

logout.jsp

String username=(String)request.getSession().getAttribute("username");

Map onlineUserMap=(Map) application.getAttribute("onlineUserMap");

if(onlineUserMap!=null && username!=null){

onlineUserMap.remove(username);

}

session.invalidate();

%>

location.href="login.jsp";

posted on 2009-06-10 23:40 e寒-modify 阅读(235) 评论(0)  编辑  收藏

java异地登录验证_同一帐号异地登录相关推荐

  1. java异地登录 怎么解决_同一帐号异地登录

    在此之前也看了很多同一帐号异地登录的,有的是采用后登录者必须等待前登录者释放后才可以登录,我的项目中要用到想qq那样可以踢出,我具体的做法如下: LoginServelt.java 做登录使用 Onl ...

  2. 用户登录验证(新增帐号错误重试)

    #!/usr/bin/env python3 # -*- coding:utf-8 -*- # # Author: Payne Zheng <zzuai520@live.com> # Da ...

  3. mysql 同一帐号多次登录_freeradius2.1.3 防止用户帐号重复登录

    freeradius2.1.3 防止用户帐号重复登录 一.修改 etc/raddb/sites-enabled 目录中的default 及inner-tunnel 这两个文件中的 #  Session ...

  4. 如何设置Luminati Proxy Manager? Luminati+VMlogin=多个( Facebook, Google, 亚马逊,ebay)等帐号同时登录,批量管理且不被关联。

    VMlogin防关联超级浏览器,一台电脑即可实现同时多开,批量注册管理多个帐号 .稳定快速,无卡顿,100%安全隔离,canvas指纹保护,防泄漏,操作简单方便.适用于亚马逊,Facebook,Goo ...

  5. mysql 授权root帐号可以远程访问,导入sql文件,登录mysql用root帐号,设置密码

    安装好了之后,MySQL默认是空密码,可以为root用户设置密码 ,注意大小写 mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('admi ...

  6. 淘宝网nbsp;E客服帐号nbsp;登录阿里旺旺时nbsp;…

       刚刚开通E客服的帐号,我们等10分钟以后,再登录阿里旺旺就会正常了.如果开通E客服功能已经比较久了,而登录阿里旺旺还是提示只能登录到指定服务器,一般是由于网络原因,E客服登帐号服务器地址不正确引 ...

  7. java spring 登录验证_浅析Spring Security登录验证流程源码

    一.登录认证基于过滤器链 Spring Security的登录验证流程核心就是过滤器链.当一个请求到达时按照过滤器链的顺序依次进行处理,通过所有过滤器链的验证,就可以访问API接口了. SpringS ...

  8. java ee 系统视频_更好的网站登录系统,EE协作登录系统

    java ee 系统视频 Preface 前言 This article introduces an authentication and authorization system for a web ...

  9. firebase登录验证_使用Firebase进行电话号码身份验证

    firebase登录验证 介绍 (Introduction) Ever since Firebase was introduced, I thought it would have a signifi ...

最新文章

  1. 一份微服务架构手稿图,彻底搞定微服务核心原理!
  2. jmeter脚本结合ant执行测试用例并生成测试报告
  3. 黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block
  4. curl 常用的命令
  5. PHP之常用设计模式
  6. 我公司有个统计学的985应届(硕士)从事数据分析岗位
  7. 微信开发者工具在线调试
  8. 使用面向 iOS 的本机插件扩展
  9. iOS 银行卡号识别
  10. QDU首届易途杯大赛-kk与cillyb的荣誉之战
  11. flask怎么创建虚拟环境_在Windows OS中创建虚拟环境并在本地运行Flask应用程序
  12. 在Windows7 系统上部署DNS服务器
  13. html目录ppt,PPT目录内容怎么写?
  14. linux 查看非法用户登录,用短信报警来监控linux系统的非法登录用户
  15. geoserver制作离线地图
  16. 专访网易游戏美术总监:寻找美术风格的蓝海
  17. 【NOIP2014模拟11.2A组】福慧双修
  18. 腰椎间盘突出引起的马尾综合征
  19. 太原理工大学计算机复试面试,太原理工大学备考复试注意事项经验分享
  20. 关于计算机的名人名言英语,英语名人名言

热门文章

  1. 宋宝华:LEP(Linux易用剖析器) 是什么,为什么以及怎么办(1)
  2. 实现一个简单的H5领红包的动画
  3. PCA主成分分析(降维)
  4. cdn缓存及缓存的清理
  5. 无线笔记本怎么连接服务器打印机驱动,笔记本怎么连接无线打印机驱动程序
  6. 精伦的开发盒子USB上外挂SD卡路径
  7. 华为云服务器双十一报价表出炉最新内容
  8. web应用F12查看报错(前后端bug判断、2XX/3XX/4XX/5XX常见状态码解析)
  9. srs源码分析3-srs的启动
  10. 什么是.NET的程序集?