如题,怎样禁止同一个帐号在同一个时间段内在两抬机器上同时登陆?也就是说某个用户已经登陆了,那么他就不能在任何别的地方再次登陆了,除非他关闭自己的浏览器或者退出登陆。

解决方案 »

  1.   

    使用Application对象,或者做一个全局变量的ArrayList,保存已经登录人的标识。每次登录判断这个全局变量是否包括登录标识。注销后删除全局变量中的相关信息。
      

  2.   

    放在session里就行吧,登陆的时候判断session里是否该用户已经存在
      

  3.   

    Session肯定是不行的,因为它是客户端的,应该放到Application对象里
      

  4.   

    在global中的Application中设一张表记下该用户的id每次登录时查询该表,如果有该用户的id,则表示该用户已登陆,没有就没登陆,容许登陆.大体思路如此.
      

  5.   

    http://sz.luohuedu.net/xml/ShowDetail.asp?id=CF5FFABC-CFE1-4368-3C13-9B4FCD7C7168
      

  6.   

    真的有这样的asp服务器!!!
    asp和asp.net服务器 50mb 25元/年
    我看到了一个网站 50MB asp和 asp.net空间 现在促销,
    同学们可以做一个简单的个人网站用来找工作 ,
     支持 asp.net 一年才25元!不要错过哦!!!
    速度非常快,一般公司企业 足够用了!
    http://www.hi876.com 他们的IP 是 211.144.143.13 国务院-国研机房的!
    希望能对大家有帮助
      

  7.   

    net_lover(孟子E章) ( )说的好
      

  8.   

    to:chsl918
      用户注销后,应怎么删除掉该用户的登录信息,如果写代码应该写在那个事件中?
      

  9.   

    利用Cache防止同一帐号重复登录 
    http://www.cnblogs.com/Hanks/
      

  10.   

    cache不是很方便么?
    建议使用Cache久可以了
      

  11.   

    cache
    不方便,他和session一样也有超时时间的,也就是说如果用户不是正常关闭页面,cache还是在服务器上面存在的。造成的结果是人已近退掉了,还是要等到cache超时后才能登陆。通过客户端判断客户是否在线不切实际,
    首先有很多种情况造成无法判断用户是否离线,
    比如
    1.画面的迁移。
    2.在任务栏上点击右键关闭。
    3.系统崩溃。
    4.掉电现象。
    无法解决。
    使用session_end 事件不能保证上述的情况将用户的数据库状态改变回来。解决方法:
    首先通过客户端的页面添加一个iframe,装载一个自动刷新的页面,每隔XX秒更新一下他的KEY对应的服务器上面的表SINGLETEST表里面的在线时间,就表示他仍然在在服务器端,建立一个守护线程,每隔固定时间就运行一遍,然后从数据库中读出当前所有在线用户列表中用户,使用KEY到服务器中的SINGLETEST表里面的在线时间,和当前时间比较,如果时间间隔超出了规定的时间,则将该用户从数据库中在线名单中删除,这样就可以做到检测用户是否在线了。可以使用多种方式记录在线时间,不一定使用数据库方式,可以使用数组方式。
    在服务器上可以建立守护线程,webService,使用Application 方式也可以。
      

  12.   

    我用了net_lover(孟子E章) 的方法,可以实现。就是一个问题,如brando_beat(Eの懒龙) 所说,如果用户不是正常关闭页面,cache还是在服务器上面存在的。如果能关闭浏览器,就失效就好了。
      

  13.   

    TO: tengfly(腾飞) 
    看你的用户数据是保存在什么类型的对象中,一般是使DataTable或者ArrayList中。具体删除事件的写法看你的这个类型对象如何删除相应数据即可。
    写注销代码应当在Global.asax.cs的Session_End中
    还有你可以做一个注销按钮,在按钮事件中写删除用户信息。即使有注销按钮,Session_End中也要写相应代码。
      

  14.   

    session  可以的。 有点 安全性高。 确定 占用系统资源
      

  15.   

    我数据库都不用,有个静态的datatable,每次用户进入,动态加一行。
    跟datagrid邦定,很容易看出用户列表,在我做的mis系统中,还可以看出用户在做什么。
      

  16.   

    晕倒偶
    你们用数据库判断的,还有用session来判断的,
    还有datatable的,
    你们告诉我如果网页不正常关闭和注销,怎么修改数据库状态和session值。
    还有人在说在session_end里面加代码。
    负责点,在直接关闭的情况下面是不执行session_end的,非要到时间过期才能执行。
    那么这段时间里面怎么处理用户已经logout,但是不能登陆吧。
      

  17.   

    同意 brando_beat(Eの懒龙) 的观点。
    其实问题的关键不在于用什么方式保存在线用户的数据,
    而是如何判断用户已经注销。
      

  18.   

    这个问题 前些日子 我试过了 最后 还是没能解决 关键的问题所在 是用户非正常退出的时候 如何判断 同事用JSP实现了这个功能 用的是破坏Session 如果用户非正常退出那么 就把该用户卡在里面 等Session超时 可是用C# 不会实现 关注这个问题 顶
      

  19.   

    我不是说了吗?
    使用守护线程来判断是否掉线,你看看这文章
    http://dev.csdn.net/develop/article/65/65215.shtm