|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你可以先看看这篇文章(软微学院生涯-三朝元老经验谈),打不开再跟我说。(我的意思是想让她自己先稍微了解一下到底现在各个方向学的工具以及以后要做的工具大概是什么,因为喜欢做什么样的事其实自己最清楚的)asp.netWeb项目中常常碰到的成绩就是统一用户名屡次上岸的成绩,响应的办理举措也良多,总结起来不过乎这几种办理举措:将上岸后的用户名放到数据库表中;上岸后的用户名放到Session中;上岸后的用户名放到Application中;上岸后的用户名放到Cache中。一样平常的这几种办法都是上岸了以后,假如没有一般加入,第二次上岸将不被同意。如许一样平常城市存在一个成绩:假如用户没有一般加入体系,那末他接上去持续上岸的时分,由于Session没有过时等成绩,会被回绝持续上岸体系,只能守候Session过时后才干上岸。本文先容的办法是接纳相似于MSN上岸的办法,第二次上岸时会把第一次的上岸刊出失落,第一次上岸将会相似于MSN弹出:您的帐号已在别处被上岸,您被强制下线的提醒信息。
功效完成起来也对照复杂:
上岸用户名暗码考证经由过程以后输出以下代码:
HashtablehOnline=(Hashtable)Application["Online"];
if(hOnline!=null)
{
IDictionaryEnumeratoridE=hOnline.GetEnumerator();
stringstrKey="";
while(idE.MoveNext())
{
if(idE.Value!=null&&idE.Value.ToString().Equals(UserID))
{
//alreadylogin
strKey=idE.Key.ToString();
hOnline[strKey]="XXXXXX";
break;
}
}
}
else
{
hOnline=newHashtable();
}
hOnline[Session.SessionID]=UserID;
Application.Lock();
Application["Online"]=hOnline;
Application.UnLock();
用户上岸的时分将上岸用户名放在一个全局变量Online,Online为Hashtable布局,Key为SessionID,Value为用户名。每次用户上岸时均判别以下要上岸的用户名在Online中是否是已存在,假如存在该用户名已被上岸,将第一团体上岸的SessionID对应的用户名强迫变动为XXXXXX,暗示该上岸将被强迫刊出。
创建一个CommonPage页,体系中一切的页面都承继于CommonPage页,在CommonPage页的背景代码中增加以下代码:
overrideprotectedvoidOnInit(EventArgse)
{
HashtablehOnline=(Hashtable)Application["Online"];
if(hOnline!=null)
{
IDictionaryEnumeratoridE=hOnline.GetEnumerator();
while(idE.MoveNext())
{
if(idE.Key!=null&&idE.Key.ToString().Equals(Session.SessionID))
{
//alreadylogin
if(idE.Value!=null&&"XXXXXX".Equals(idE.Value.ToString()))
{
hOnline.Remove(Session.SessionID);
Application.Lock();
Application["Online"]=hOnline;
Application.UnLock();
MessageBox("你的帐号已在别处上岸,你被强制下线!",Login.aspx);
returnfalse;
}
break;
}
}
}
}
承继于CommonPage的页面在革新时都要实行重载的OnInit中的代码,掏出Online,找到该用户对应的SessionID,判别SessionID里对应的用户名是不是变动,假如变动,就强制下线,清失落Session,转到Login画面。
最初必要在Session过时大概加入体系时开释资本,在Global.asax文件中的Session_End中增加以下代码:
HashtablehOnline=(Hashtable)Application["Online"];
if(hOnline[Session.SessionID]!=null)
{
hOnline.Remove(Session.SessionID);
Application.Lock();
Application["Online"]=hOnline;
Application.UnLock();
}
假如用户不一般加入后重上岸,由于重上岸的优先级年夜,不会影响用户的上岸,而不一般加入的用户占用的资本会在Session过时后主动扫除,不会影响体系的功能。
你可以先看看这篇文章(软微学院生涯-三朝元老经验谈),打不开再跟我说。(我的意思是想让她自己先稍微了解一下到底现在各个方向学的工具以及以后要做的工具大概是什么,因为喜欢做什么样的事其实自己最清楚的) |
|