none
.net 判断同一用户不能重复登录 session RRS feed

  • 问题

  • 我用哈希表    存用户登录用户的信息: 是一个帐户只能在一个机器登录,如果不注销,别的机器不让同时登录?
        判断不成功,有好的解决方案吗?谢了:


    小吴
    2009年6月6日 0:50

答案

  • 你好,设计思路是,首先你需要使用全局共享的变量作为标示来控制用户的登录情况,Cache比Application好使很多,在登录的时候判断这个Cache值是否存在,如果不存在就让其登录。
    邹俊才
    2009年6月7日 3:43
    版主
  • 你可以在每次登陆的时候判断一下用户是否在登陆信息的那个Hash表中撒,如果在的话就不让其写入session撒
    努力着就不会放弃!.net技术交流群 33083877http://hi.baidu.com/1987raymond
    2009年6月6日 1:53
    版主
  • // 作为唯一标识的Key,应该是唯一的,这可根据需要自己设定规则。
      // 做为测试,这里用用户名和密码的组合来做标识;也不进行其它的错误检查。

      // 生成Key
      string sKey = UserName.Text + "_" + PassWord.Text;
      // 得到Cache中的给定Key的值
      string sUser = Convert.ToString(Cache[sKey]);
      // 检查是否存在
      if (sUser == null || sUser == String.Empty)
      {
        // Cache中没有该Key的项目,表名用户没有登录,或者已经登录超时
        // 注意下面使用的TimeSpan构造函数重载版本的方法,是进行是否登录判断的关键。
        TimeSpan SessTimeOut = new TimeSpan(0,0,System.Web.HttpContext.Current.Session.Timeout,0,0);
        HttpContext.Current.Cache.Insert(sKey,sKey,null,DateTime.MaxValue,SessTimeOut,
          System.Web.Caching.CacheItemPriority.NotRemovable,null);
        Session["User"] = sKey;
        // 首次登录,您可以做您想做的工作了。
        Msg.Text="<h4 style='color:red'>嗨!欢迎您访问</h4>";
      }
      else
      {
        // 在 Cache 中发现该用户的记录,表名已经登录过,禁止再次登录
        Msg.Text="<h4 style='color:red'>抱歉,您好像已经登录了呀:-(</h4>";
       return;
      }
    }


    【孟子E章】
    2009年6月6日 15:51
    版主

全部回复

  • 你可以在每次登陆的时候判断一下用户是否在登陆信息的那个Hash表中撒,如果在的话就不让其写入session撒
    努力着就不会放弃!.net技术交流群 33083877http://hi.baidu.com/1987raymond
    2009年6月6日 1:53
    版主
  • 你怎么判断是否同一个机器?同一个用户可以使用不同浏览器同时登录的。
    MSMVP VC++
    2009年6月6日 1:53
    版主
  • // 作为唯一标识的Key,应该是唯一的,这可根据需要自己设定规则。
      // 做为测试,这里用用户名和密码的组合来做标识;也不进行其它的错误检查。

      // 生成Key
      string sKey = UserName.Text + "_" + PassWord.Text;
      // 得到Cache中的给定Key的值
      string sUser = Convert.ToString(Cache[sKey]);
      // 检查是否存在
      if (sUser == null || sUser == String.Empty)
      {
        // Cache中没有该Key的项目,表名用户没有登录,或者已经登录超时
        // 注意下面使用的TimeSpan构造函数重载版本的方法,是进行是否登录判断的关键。
        TimeSpan SessTimeOut = new TimeSpan(0,0,System.Web.HttpContext.Current.Session.Timeout,0,0);
        HttpContext.Current.Cache.Insert(sKey,sKey,null,DateTime.MaxValue,SessTimeOut,
          System.Web.Caching.CacheItemPriority.NotRemovable,null);
        Session["User"] = sKey;
        // 首次登录,您可以做您想做的工作了。
        Msg.Text="<h4 style='color:red'>嗨!欢迎您访问</h4>";
      }
      else
      {
        // 在 Cache 中发现该用户的记录,表名已经登录过,禁止再次登录
        Msg.Text="<h4 style='color:red'>抱歉,您好像已经登录了呀:-(</h4>";
       return;
      }
    }


    【孟子E章】
    2009年6月6日 15:51
    版主
  • 你好,设计思路是,首先你需要使用全局共享的变量作为标示来控制用户的登录情况,Cache比Application好使很多,在登录的时候判断这个Cache值是否存在,如果不存在就让其登录。
    邹俊才
    2009年6月7日 3:43
    版主