① 你好,java web中,关于用户重复登录的问题
登录的用户id放到application中,session结束有超期结束,有用户点击退出结束,结束后就从application删除用户id。
② java web 开发用户重复登陆和注销问题
虽然我是PHP的web开发,但是,你这问题我还是能帮上忙的。
首先,你这里“如果在线则不能登陆”,这样对用户体验是不好的,如果检测为在线,按正常流程将用户引导就好了,并不是弹个窗或跳转个页面,说“你已在线,不能登录”,如果你是用户,不怎么想?
2,的确有很多的用户在退出时都不是按“退出”键,而是直接关闭浏览器,这时你可以在记录在线用户的表里加入一列,记录用户的最后刷新时间,若超出了你规定的时间范围就将该用户踢下线。比如你规定的时间是20分钟,如果某用户的最后刷新时间超出了20,那么。。。。
希望能帮到你。
③ JAVA 如何避免用户的重复登录
读懂下面代码,就知道如何实现 一个用户登陆 踢掉之前登陆的用户了
//第一步
//此监听器用来监听用户在对session做操作的时候执行相应的方法
importjavax.servlet.http.HttpSession;
importjavax.servlet.http.HttpSessionAttributeListener;
importjavax.servlet.http.HttpSessionBindingEvent;
importjavax.servlet.http.HttpSessionEvent;
importjavax.servlet.http.HttpSessionListener;
importjava.util.*;
,
HttpSessionAttributeListener{
//保存当前登录的所有用户
publicstaticMap<HttpSession,Long>loginUser=
newHashMap<HttpSession,Long>();
//用这个作为session中的key
publicstaticStringSESSION_LOGIN_NAME="user_id_key";
//session创建时调用这个方法
publicvoidsessionCreated(HttpSessionEventarg0){
}
//Session失效或者过期的时候调用的这个方法,
publicvoidsessionDestroyed(HttpSessionEventse){
//如果session超时,则从map中移除这个用户
try{
loginUser.remove(se.getSession());
}catch(Exceptione){
e.printStackTrace();
}
}
//执行setAttribute的时候,当这个属性本来不存在于Session中时,调用这个方法.
publicvoidattributeAdded(HttpSessionBindingEventse){
//如果添加的属性是用户名,则加入map中
if(se.getName().equals(SESSION_LOGIN_NAME)){
loginUser.put(se.getSession(),Long.valueOf(se.getValue().toString()));
}
}
//当执行removeAttribute时调用的方法
publicvoidattributeRemoved(HttpSessionBindingEventse){
//如果移除的属性是用户名,则从map中移除
if(se.getName().equals(SESSION_LOGIN_NAME)){
try{
loginUser.remove(se.getSession());
}catch(Exceptione){
}
}
}
//当执行setAttribute时,如果这个属性已经存在,覆盖属性的时候,调用这个方法
publicvoidattributeReplaced(HttpSessionBindingEventse){
//如果改变的属性是用户名,则跟着改变map
if(se.getName().equals(SESSION_LOGIN_NAME)){
loginUser.put(se.getSession(),Long.valueOf(se.getValue().toString()));
}
}
//别忘了到你的web.xml中去配置一下listener
//第二步
//写一个判断用户是否已经登陆的方法
publicbooleanisLogonUser(LonguserId){
Set<HttpSession>keys=SessionListener.loginUser.keySet();
for(HttpSessionkey:keys){
if(SessionListener.loginUser.get(key).equals(userId)){
returntrue;
}
}
returnfalse;
}//第三步
//在用户登陆的action.method,或者是loginServlet.doGet/doPost中
//判断用户名、密码都OK后,再调用第二步的方法,参数为用户ID;true则表示该用户已经登陆
//第四步
//用户窗口关闭/或者用户退出的时候,*一定要request.getSession().invalidate()
//用户窗口关闭js
//关闭窗口时调用此方法
functionwindow.onunload(){
if((window.screenLeft>=10000&&window.screenTop>=10000)||event.altKey)
{
//清除当前session,使用jquery提供的方法
$.post("${base}/ClearSession.wp");
//[${base}/ClearSession.wp]这是一个请求,
//请求到自己写的ClearSessionServlet
//在此ClearSessionServlet中重写doPost方法,
//内容为request.getSession().invalidate()
}
④ java web 开发用户重复登陆和注销问题
虽然我是PHP的
web开发
,但是,你这问题我还是能帮上忙的。
首先,你这里“如果在线则不能登陆”,这样对用户体验是不好的,如果检测为在线,按正常流程将用户引导就好了,并不是弹个窗或跳转个页面,说“你已在线,不能登录”,如果你是用户,不怎么想?
2,的确有很多的用户在退出时都不是按“退出”键,而是直接关闭浏览器,这时你可以在记录在线用户的表里加入一列,记录用户的最后刷新时间,若超出了你规定的时间范围就将该用户踢下线。比如你规定的时间是20分钟,如果某用户的最后刷新时间超出了20,那么。。。。
希望能帮到你。
⑤ java如何实现重复登录强制下线功能
登录之后,更具用户名,密码,登录时间等用某种算法生成唯一不可破译的编码字符串token(每次登录不同),设置唯一,以后的任何操作都用这个token进行验证。这样每次能保证有且只有一个用户
⑥ java web 开发用户重复登陆和注销问题
虽然我是PHP的web开发,但是,你这问题我还是能帮上忙的。
首先,你这里“如果在线则不能登陆”,这样对用户体验是不好的,如果检测为在线,按正常流程将用户引导就好了,并不是弹个窗或跳转个页面,说“你已在线,不能登录”,如果你是用户,不怎么想?
2,的确有很多的用户在退出时都不是按“退出”键,而是直接关闭浏览器,这时你可以在记录在线用户的表里加入一列,记录用户的最后刷新时间,若超出了你规定的时间范围就将该用户踢下线。比如你规定的时间是20分钟,如果某用户的最后刷新时间超出了20,那么。。。。
希望能帮到你。
⑦ java web用户重复登录问题
最简单的做法:
你可以在数据库表中增加一个字段,loginStatus(命名就随便了)就设置2个值把 1和2(随便什么都行)一个用户登录的时候,如果loginStatus的值是1,则将其更改为2 如果是2,则更改为1这时候,将更改后的值存储在session中,则每次进行有关用户操作的时候, 都去表中查看loginStatus的值跟你session中的值是否相同如果不相同,则将session存储的用户信息remove掉你会很奇怪,为什么会不同,很简单:如果此时,另外一个人登录的时候,走的是相同的业务逻辑,这时候会把loginStatus的值更改。则前一个登录的人session中存储的loginStatus当然就不一样了
⑧ Java 如何控制用户重复登陆
如果你想让后来的登录者把前一个登录者踢下线,则需要存储session ID,用户名可以存在数据库,也可以使用保存在session里的那个。当新用户登陆的时候,搜索这个用户名是否已登录,如果是,则找到相应session ID,把它invalidate,然后再把新的session ID存入数据库。
第一个方法需要在用户进行任何操作的时候即时更新数据库里用户的时间,然后用一个cron job检查这个用户名存在是不是超过了设定的时间,然后决定是否把这个用户删除。(如果把session ID也存上就简单多了)
第二个方法只要用cron job定期检查每个session是否还活着就可以了,如果session已死,就把数据库里相应记录删除
⑨ java web程序spring mvc 如何解决用户重复登录
这个,session存储登录信息,是有过期时间的默认是30分钟吧,你可以做在登录的时候进行一个session用户判断就可以解决重复登录问题,注销时,将session中用户清除,关闭浏览器一般不用做处理的。
⑩ java如何实现用户二次登陆时,将第一次登陆踢下线
常见做法如下:每个用户登录后建立一个用户对象,将其同时放入session和在线用户集合;每个用户登录前先检查该用户名是不是在集合内,如果是,则将原用户对象移除,让二次登录的用户直接登录;用户每个请求前的在线状态查询里,判断其sesssion里用户对象是不是在集合里,不是则提醒未登录。