在asp.net提供的成员管理中,如何实现同一帐号在一个地方登录后,如果其它地方有同一帐号登录,会弹出对话框提醒:有用户用同一帐号登录。

解决方案 »

  1.   

    http://dev.yesky.com/187/7680687.shtml
    Asp.net中防止用户多次登录的方法
      

  2.   

    我刚才翻了一下配置文件,ASP.NET 自带的 SqlMembershipProvider 没有这个功能。
      

  3.   

    我最近刚做的,单用户单登陆的,在网上查了很多的资料,一般都是依赖于数据库,就是一登陆是TRUE,正常退出就FLASE,非正常的时候就在Global.asax把FLASE写进数据库!
    曾经见网上提供了一种像QQ的那种,就是一个用户登陆 ,下一个用户登陆的时候会顶掉上一个!不过方法看上去很复杂,没用!
      

  4.   

    在数据库中建立一张表   包含必要的登陆信息 和 在线时间,
    1.登陆之前先检查用户是否已经登陆,
    2.如果该用户没登陆,则可以登陆,并开始记录在线时间
    3,如果已经有用户登录,则给出相应提示。
    4,用户正常退出,删除该用户的登陆信息
    5,用户非正常退出,该用户被锁定 要过“一段时间"才可以登录,一定时间后删除表中该用户的登陆信息。(这个时间应该与Session保存的用户信息的时间相同) 我的一个项目就是这样做的。
      

  5.   

    单点登录系统是一个相当通用的需求,因此不能在系统设计中引入“SessionID”之类的概念来标识用户的会话,而应该用一个通用的概念。单点登录系统的逻辑和数据库等同时满足不同客户端平台,例如同时满足asp.net、silverlight、javascript、java等客户端,甚至包括多种手机客户端的访问。满足多中客户端平台,才能体现单点登录的概念。应用中一个客户登录后,系统对此后的操作权限判断不是依赖于客户资料,而是依赖于登录所得到的passport资料。当客户登录时,系统分配一个新的passport(哪怕只是一个简单的整数编号),然后应用再操作任何数据时后台系统都是根据它的passport数据来计算出权限。如果你的登录管理系统逻辑约束为同一时间一个用户只能有一个passport,那么就是单点登录;如果为2个,就是允许最多2个客户端使用同一个帐号登录。例如,一个用户使用asp.net登录,同时另外一个客户使用自己的手机登录,那么单点登录系统就会发现当前客户的passport还存在而拒绝分配passport;或者它可以删除先前的passport而使得asp.net程序在随后的访问中出先“凭据过期”错误。客户端应该在类似“断点”等情况下,服务端依然能够及时记录用户离线状态。例如用户在网页上“发呆”超过20分钟,或者干脆去访问其它网站了,服务器当然就应该把客户记录为离线。一般来说,服务器端应该在客户离线几十秒钟之内就记录离线状态,而不是等着客户端应用程序去执行“正常退出”功能。另外,如果客户端使用同样的passport启动不同的应用,例如一个asp.net程序使用自己得到passport启动了另一个asp.net程序,甚至另一个WinForm桌面程序,那么本地的这3个应用就使用同一个帐号作为单点登录进去了。后两个应用无需再显示用户登录界面。这也是单点登录系统应该涉及到的功能。
      

  6.   

    哦,我有看了一下我的回复。补充一下关于在asp.net下“几十秒钟内记录客户离线”的设计。在passport对象中需要有字段记录“最后访问时间”。所有页面页面需要定时访问服务器,例如在UpdataPanel中加入一个Timer控件(例如20秒钟响应一次),这应该设计为一个ascx,然后用鼠标拖入每一个aspx即可。并且页面在 !IsPostback 状态下(第一次访问)时当然也需要执行同样的后台功能。这个后台功能就是找到passport并刷新数据库中它的“最后访问时间”。在后台判断用户操作的权限时,如果根据cookie中记录的passport键值在数据库中找不到记录,或者虽然找到但是最后访问时间超时了(例如超过了50秒),那么就抛出“您的访问凭据已经过期”信息。至于何时创建passport,何时删除,我前边已经写出来了。
      

  7.   

    没有可以自己写啊,Membership类中肯定有判断一个用户是否活动的方法。如果该用户活动那就是登录了。
      

  8.   

    以前设计单点登陆都是用application存个tabletable记录登陆用户主键信息,用户登陆时在table里查找像断电,非法关机目前好像还没有很好的办法,只能用sessiontimeout判断