我的bbs,使用Forms验证,如何限制一个用户不能在多个不同的地方同时登录或者一个用户登录后知道这个用户已经在别的地方登录了那么需要将这个用户注销掉,我知道用session做验证非常容易实现这个功能,但Forms我还没找到好的办法,那位大侠给点意见,谢谢。

解决方案 »

  1.   

    登陆之后把用户信息记录在application里头嘛
      

  2.   

    是不是没说明白,我再描述一下:
    使用Forms验证,如何限制一个用户不能在多个不同的地方同时登录或者当一个用户登录时知道这个用户已经在别的地方登录了那么需要将这个已登陆的用户注销掉
      

  3.   

    在ASP.NET 中实现单点登录
    http://dotnet.aspx.cc/ShowDetail.aspx?id=CF5FFABC-CFE1-4368-3C13-9B4FCD7C7168
      

  4.   

    在Application中维护一个用户名和SessionID的映射表
    如果有同名用户登录就更新这个SessionID为新的SessionID
    然后添加一个验证模块,如果请求的 SessionID不在Application中,就拒绝请求(转到另一个地方已经登录的提示页面)
      

  5.   

    赞成 vivianfdlpw(*) 的方法
      

  6.   

    需要强调的一点是,我是使用Forms验证,客户端的身份验证票可能是一个具有持久性的cookie。比如:
    1、用户admin从计算机A登录系统,他的身份验证信息在机器上保留一个月,那么在这一个月内,他登陆系统,不需要再输入验证信息。现在用户admin从计算机A登录系统。
    2、那么当用户admin从计算机B上登录,此时由于该用户已经在A上登录,所以需要将A上的用户注销掉,也就是Admin在A上的验证信息失效,他再登录系统时,需要重新提供登录信息。vivianfdlpw的方法和我最初的想法一样,可是有个问题,那就是Session会过期(不让它过期可有点不好哦),如果只在情况1下,在session过期以后他就不能使用cookie进行身份验证。