• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

asp.net下一个账号不允许多个用户同时在线,重复登陆的代码

asp 搞代码 4年前 (2022-01-03) 25次浏览 已收录 0个评论

asp.net下一个账号不允许多个用户同时在线,重复登陆的代码,需要的朋友可以参考下。

方法一:

代码如下:
string sKey = username.Text.ToString().Trim(); // 得到Cache中的给定Key的值
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);//取得Session的过期时间
HttpContext.Current.Cache.Insert(sKey, sKey, null, DateTime.MaxValue, SessTimeOut, System.Web.Caching.CacheItemPriority.NotRemovable, null);//将值放入cache己方便单点登录
//成功登录
}
else if (Cache[sKey].ToString() == sKey)//如果这个账号已经登录
{
ClientScript.RegisterStartupScript(GetType(), “提示”, “”);
return;
}
else
{
Session.Abandon();//这段主要是为了避免不必要的错误导致不能登录
}

代码如下:
//关闭浏览器或窗口时清空Cache的方法.在主页面aspx文件中加入一个onunload事件.通过ajax清空hOnline中的Session.SessionID
window.onunload=function(){
$.ajax({
type: “POST”,
   data:”sKey=”+sKey;
url: “online.aspx”
});
}

online.aspx.cs代码

代码如下:
protected void Page_Load(object sender, EventArgs e)
{
    HttpContext.Current.Cache.Remove(sKey);
}来源[email protected]搞@^&代*@码网
//在Global.asax文件中的Session_End方法里加入
//Session过期后.清空hOnline中的Session.SessionID
    Hashtable hOnline = (Hashtable)Application[“Online”];
if (hOnline[Session.SessionID] != null)
{
hOnline.Remove(Session.SessionID);
Application.Lock();
Application[“Online”] = hOnline;
Application.UnLock();
}

方法二:

代码如下:
//sKey为登录用户名
if(ApplicationOnline(username.Text.tirm())){
Hashtable hOnline = new Hashtable();
hOnline[Session.SessionID] = sKey;
Application.Lock();
Application[“Online”] = hOnline;
Application.UnLock();
}

public Boolean ApplicationOnline(string sKey)
{
Boolean flag = true;
Hashtable hOnline = (Hashtable)Application[“Online”];
if (hOnline != null)
{
IDictionaryEnumerator idE = hOnline.GetEnumerator();
while (idE.MoveNext())
{
//if (idE.Key != null && idE.Key.ToString().Equals(Session.SessionID))
//{
if (idE.Value != null && sKey.Equals(idE.Value.ToString()))
{
flag = false;
}
break;
//}
}
}
return flag;
}

//关闭浏览器或窗口时清空Session.SessionID的方法.在主页面aspx文件中加入一个onunload事件.通过ajax清空Session.SessionID
window.onunload=function(){
$.ajax({
type: “POST”,
url: “online.aspx”
});
}

online.aspx.cs代码

代码如下:
protected void Page_Load(object sender, EventArgs e)
{
Hashtable hOnline = (Hashtable)Application[“Online”];
if (hOnline[Session.SessionID] != null)
{
hOnline.Remove(Session.SessionID);
Application.Lock();
Application[“Online”] = hOnline;
Application.UnLock();
}
}

以上就是asp.net下一个账号不允许多个用户同时在线,重复登陆的代码的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:asp.net下一个账号不允许多个用户同时在线,重复登陆的代码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址