String sKey = "IIS107";
String sUser = Convert.ToString(Cache["sKey"]);
if (sUser == null || sUser == String.Empty)
{
    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;
    Response.Write("登录成功");
}
else
{
    Response.Write("您好像已经登录了!");
}
感觉不行,要是用户不小心关掉当前的窗口 就没有办法登录了
比如我登录后关了这个浏览器那么就没有办法再登录,得等那个Session过期才行这样不是很痛苦谢谢

解决方案 »

  1.   

    那你就在unload里加上session失效代码
      

  2.   

    完整的方案需要结合cookie,ip等
      

  3.   

    单点登录?    SSO?
    看不懂代码,和我理解的单点登录好像不是一回事情!
      

  4.   

    可不可以说说编程思想如:
    首先判断当前的Cookie中是否有登录信息(Cookie的有效期和Session一样,以保持Session过期时Cookie过程),
    如果有跳过Cache
    进行登录
    -----------------------------------------
    如果是这样的话那么当用户在这一IP关了页后面,都第二个IP的时候又得等到那个Session过期
    这时怎么办呢(当前前提是那个用户没有去请空他登录的那个Cache)
      

  5.   

    不是 Single Sing-ON 而是同一个用户名只能有一个正在登录
      

  6.   

    其实可以结合IP和数据库(或COOKIE),单CACH肯定是不好的
      

  7.   

    可以用Context.Cache 缓存对象
      

  8.   

    我也正在为这事发愁呢,楼主要是有好的解决方法,告诉我一声啊,谢谢。我邮箱[email protected]