1

我想禁用多重登录到我的网站。

所以我在缓存中创建一个会话。

我在登录前检查会话是否已经存在于缓存中,如果不是,我正在创建一个会话并允许他登录。如果会话已经存在,我会抛出一条错误消息,表明您已在其他地方登录。

我正在注销中清除本地和缓存会话。一切正常,但是当页面因不活动而过期时,本地会话将被删除,但缓存中的会话保持不变。所以即使我试图从同一个浏览器登录,它也会给出错误,因为我已经登录了。

这是我在 global.asax 中的代码

 if (HttpContext.Current.Session != null &&
 HttpContext.Current.Session["MULTIPLELOGIN"] != null)
    {
        string sKey = Session["MULTIPLELOGIN"].ToString();
        string sRecruiter = HttpContext.Current.Cache[sKey].ToString();
    }  

在登录

string sKey = oRecruiter.RecruiterId.ToString();
string sRecruiter = Convert.ToString(HttpContext.Current.Cache[sKey]);
if (sRecruiter == null || sRecruiter == String.Empty)
{
TimeSpan SessTimeOut = new TimeSpan(0, 0, HttpContext.Current.Session.Timeout, 0, 0);
HttpContext.Current.Cache.Insert(sKey, sKey, null, DateTime.MaxValue, SessTimeOut,   System.Web.Caching.CacheItemPriority.NotRemovable, null);
HttpContext.Current.Session["MULTIPLELOGIN"] = userid;

允许登录 } else { 或错误信息 }

请让我知道如何同时使这两个东西过期。

4

2 回答 2

0

我发现答案将 cacheitempriority 从 NotRemovable 更改为 SessTimeOut, System.Web.Caching.CacheItemPriority.Normal

于 2013-06-10T07:35:03.767 回答
0

让缓存过期超时和会话超时相同,这可能会解决您的问题

于 2013-06-07T11:34:38.393 回答