java异地登录验证_同一帐号异地登录
在此之前也看了很多同一帐号异地登录的,有的是采用后登录者必须等待前登录者释放后才可以登录,我的项目中要用到想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异地登录验证_同一帐号异地登录相关推荐
- java异地登录 怎么解决_同一帐号异地登录
在此之前也看了很多同一帐号异地登录的,有的是采用后登录者必须等待前登录者释放后才可以登录,我的项目中要用到想qq那样可以踢出,我具体的做法如下: LoginServelt.java 做登录使用 Onl ...
- 用户登录验证(新增帐号错误重试)
#!/usr/bin/env python3 # -*- coding:utf-8 -*- # # Author: Payne Zheng <zzuai520@live.com> # Da ...
- mysql 同一帐号多次登录_freeradius2.1.3 防止用户帐号重复登录
freeradius2.1.3 防止用户帐号重复登录 一.修改 etc/raddb/sites-enabled 目录中的default 及inner-tunnel 这两个文件中的 # Session ...
- 如何设置Luminati Proxy Manager? Luminati+VMlogin=多个( Facebook, Google, 亚马逊,ebay)等帐号同时登录,批量管理且不被关联。
VMlogin防关联超级浏览器,一台电脑即可实现同时多开,批量注册管理多个帐号 .稳定快速,无卡顿,100%安全隔离,canvas指纹保护,防泄漏,操作简单方便.适用于亚马逊,Facebook,Goo ...
- mysql 授权root帐号可以远程访问,导入sql文件,登录mysql用root帐号,设置密码
安装好了之后,MySQL默认是空密码,可以为root用户设置密码 ,注意大小写 mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('admi ...
- 淘宝网nbsp;E客服帐号nbsp;登录阿里旺旺时nbsp;…
刚刚开通E客服的帐号,我们等10分钟以后,再登录阿里旺旺就会正常了.如果开通E客服功能已经比较久了,而登录阿里旺旺还是提示只能登录到指定服务器,一般是由于网络原因,E客服登帐号服务器地址不正确引 ...
- java spring 登录验证_浅析Spring Security登录验证流程源码
一.登录认证基于过滤器链 Spring Security的登录验证流程核心就是过滤器链.当一个请求到达时按照过滤器链的顺序依次进行处理,通过所有过滤器链的验证,就可以访问API接口了. SpringS ...
- java ee 系统视频_更好的网站登录系统,EE协作登录系统
java ee 系统视频 Preface 前言 This article introduces an authentication and authorization system for a web ...
- firebase登录验证_使用Firebase进行电话号码身份验证
firebase登录验证 介绍 (Introduction) Ever since Firebase was introduced, I thought it would have a signifi ...
最新文章
- 一份微服务架构手稿图,彻底搞定微服务核心原理!
- jmeter脚本结合ant执行测试用例并生成测试报告
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block
- curl 常用的命令
- PHP之常用设计模式
- 我公司有个统计学的985应届(硕士)从事数据分析岗位
- 微信开发者工具在线调试
- 使用面向 iOS 的本机插件扩展
- iOS 银行卡号识别
- QDU首届易途杯大赛-kk与cillyb的荣誉之战
- flask怎么创建虚拟环境_在Windows OS中创建虚拟环境并在本地运行Flask应用程序
- 在Windows7 系统上部署DNS服务器
- html目录ppt,PPT目录内容怎么写?
- linux 查看非法用户登录,用短信报警来监控linux系统的非法登录用户
- geoserver制作离线地图
- 专访网易游戏美术总监:寻找美术风格的蓝海
- 【NOIP2014模拟11.2A组】福慧双修
- 腰椎间盘突出引起的马尾综合征
- 太原理工大学计算机复试面试,太原理工大学备考复试注意事项经验分享
- 关于计算机的名人名言英语,英语名人名言