当前位置: 移动技术网 > IT编程>开发语言>.net > asp.net下一个账号不允许多个用户同时在线,重复登陆的代码

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

2017年12月12日  | 移动技术网IT编程  | 我要评论

4849小游戏,一诺倾情国语版下载,软体家具香河家具城

方法一:

复制代码 代码如下:

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(), "提示", "<script>alert('对不起,当前用户已经登录');</script>");
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);
}
//在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();
}
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网