请教怎样判断用户不能重复登陆????

是风啊a 2008-01-22 12:09:48
判断用户是否已登陆?还有就是如果有很多个用户,是不是要一个一个判断???
还是有更好的办法?最好有代码
...全文
621 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
believejjtrue 2011-10-24
  • 打赏
  • 举报
回复
最近学习的老师让我们做一个小的网站 遇到这样的问题了 之前用session做 觉得不够严谨
KK3K2005 2008-01-25
  • 打赏
  • 举报
回复


简单办法是 让后登陆的冲掉前面登陆的
建立一个 HashMap (登陆者名称,登陆者session)


当新的成功登陆就 检查 这个登陆名否有SESSION在了 存在就 清空这个SESSION(这样第一次登陆者SESSION就空了)
然后放置新的SESSION进去

session 结束事件中 添加 HASHMAP中的删除事件(要判断是否还是登陆状态)
cn12592 2008-01-25
  • 打赏
  • 举报
回复
DB加一个字段,记录用户登陆状态,起到用户登陆后锁定用户的作用.
是风啊a 2008-01-25
  • 打赏
  • 举报
回复
我试的是STRUTS,没整明白..
是风啊a 2008-01-24
  • 打赏
  • 举报
回复
kke_007 这位的似乎不太合适
olivesoup 冬瓜的应该可行,不过图片看不到了..
不是STRUTS的,正在试,呵
olivesoup 2008-01-24
  • 打赏
  • 举报
回复
给你的那个帖子里就是通过了的啊,当时图都发上去了,不通过我费那么大劲干嘛
olivesoup 2008-01-24
  • 打赏
  • 举报
回复
>在不同的机器上可行吗?
当然可行,当时重点就是解决这个问题

>断电的情况是否可行?
遗憾,当时没有测试断电情况,你可以试一下,有什么问题留言,我还会关注
Hao粑粑爱生活 2008-01-24
  • 打赏
  • 举报
回复
在数据库里多加一个字段记录登录时间,在每次登录的时候都会把登录时间update到数据库,同时也把它存在session里。然后再弄个过滤器,这个过滤器用来对比session里的时间跟数据库里的时间是否一致,如果不一致,就销毁session。这样,应该可以保证得了只有最后登录的用户才有权限吧?
是风啊a 2008-01-24
  • 打赏
  • 举报
回复
啊,我试了几次没通过...
在侠能做个通过的我看看吗?
olivesoup 2008-01-24
  • 打赏
  • 举报
回复
是不是struts的无所谓啊,只要你用servlet就行

欢迎测试,共同改进!

我也奇怪为什么图片看不到,我当时在公司发的,回家就看不到,现在也只能在公司的机器上看到,
难道我传的图片只有我一个人能看到??

感觉csdn并没有获取我的图片,只是拿了我的链接
真不知道这个论坛是怎么做的,bug一堆堆的
xho22 2008-01-23
  • 打赏
  • 举报
回复
在数据库表里面加一列,叫在线情况,1在线0不在线,登入的时候就修改这条
olivesoup 2008-01-23
  • 打赏
  • 举报
回复
我曾经回答过这个问题,你参考一下吧,里面的代码是现成的,用application解决的
http://topic.csdn.net/u/20071218/17/ba4861a2-94a7-46b2-9d85-b2d17008820e.html
kke_007 2008-01-23
  • 打赏
  • 举报
回复
ArrayList list = null;
//调用登陆方法
list = infoDao.infoSelect(name, pwd, actor);
if (list != null) {
//用for循环取list的值
for (int i = 0; i < list.size(); i++) {
//StuInfoBean来接收
StuInfoBean bean = (StuInfoBean) list.get(i);
//把姓名和角色放到session里去
se.setAttribute("name", bean.getStuName());
se.setAttribute("actor", bean.getActor());
se.setAttribute("actor",actor);
//判断list不等于null
if (actor.equals("学生")) {
//判断actor是学生
//用学生的状态来判断学生是否第一次进来

if (!bean.getComputer().equals("1")) {
//只要学生进来过就不给生进去!
out.print(
"<script>alert('你已经登录过一次想登录在请联系老师');window.location='login.jsp'</script>");
//给他跳到页面
// request.getRequestDispatcher("/login.jsp").forward(request, response);
//response.sendRedirect("/WebRoot/login.jsp");

// request.getRequestDispatcher("login.jsp").forward(request, response);
} else {
//用学生的状态学生第一次进来
//调用更新状态

//获取计算机的IP地址
String Conputer = request.getRemoteHost();

//进行自动更新学生的状态
if (infoDao.infoUpdata(bean.getId(), Conputer)) {
request.getSession().setAttribute("id",
bean.getId() + "");

String ClassName = infoDao.getStuClass(
name);
getServletContext().setAttribute(
"className", ClassName);

// request.getRequestDispatcher(
// "/student/stuAns.jsp").forward(
// request, response);
response.sendRedirect(
"/WebRoot/student/stuAns.jsp");
}
是风啊a 2008-01-23
  • 打赏
  • 举报
回复
哦,是吧,有代码吗?看看在用户登陆时所做的??
fangshk2007 2008-01-23
  • 打赏
  • 举报
回复
先问一下,在数据库中没有一个属性判断表示用户是否在线吗?
就是没有那只能用 HttpServletSession 了,前面有几位答的很好
是风啊a 2008-01-23
  • 打赏
  • 举报
回复
在不同的机器上可行吗?断电的情况是否可行?
我研究一下明天,整明白了就结贴
kke_007和olivesoup 这两位的也许可行
kke_007能说下哪个是在类里,哪个是在JSP里的代码吗?
叶子哟 2008-01-22
  • 打赏
  • 举报
回复
嗯,用表来即时判断比较好,用户少的可以用session
另外,需要判断用户退出时的错误处理!!!
liushoucang 2008-01-22
  • 打赏
  • 举报
回复
zb_86 的方法不可用,因为SESSION是浏览器管理的,放置了SESSION只能是在当前打开的浏览器存在,如果另一个用户使用另一台计算机登陆,这时候捕获的SESSION为null,所以还是认为没有登陆.
我建议可以使用下面两种方法:
1,给数据库USERINFO表中加一个用户登陆状态的标记,登陆时判断一下该用户是否登陆
2,可以将用户登陆信息放在application中来判断是否已经登陆
zb_86 2008-01-22
  • 打赏
  • 举报
回复
用户登录后把用户信息放到session里,每次登录的时候判断session是否有,如果有,就说明用户重新登录
超时也是一样,超时了,session就清了,用户就不存在了

伪代码:

User user = (User)request.getSession().getArribute("user",user); //从session中取用户

request.getSession().setArribute("user",user); //把用户放到session中
是风啊a 2008-01-22
  • 打赏
  • 举报
回复
还有就是超时的话,这个用户是否还存在呢?
加载更多回复(4)

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧