防止用户登重复登录思路

实现思路:

 用户登录成功后,将用户登录信息存放到Hashtable类型的Application["Online"]里面,其键值为 SessionID,其Value值为用户ID;当用户注销时,调用Session.Abandon;在Global.asax里面的 SessionEnd事件中,将用户ID从Hashtable中删除;在用户访问页面时,察看Hashtable中能不能 有对应的用户ID如果没有则判断用户不在线

 

1、公用类中判断用户能不能 在线的函数(供用户调用)

 

ExpandedBlockStart.gif 代码
/**/ ///   <summary>  
///  判断用户strUserID能不能 包含在Hashtable h中 
///   </summary>  
///   <param name="strUserID"></param>  
///   <param name="h"></param>  
///   <returns></returns>  
public   static   bool  AmIOnline( string  strUserName, Hashtable h)
{
    
if  (strUserName ==   null )
        
return   false ;

    
// 继续判断能不能 该用户已经登陆 
     if  (h  ==   null )
        
return   false ;

    
// 判断哈希表中能不能 有该用户 
    IDictionaryEnumerator e1  =  h.GetEnumerator();
    
bool  flag  =   false ;
    
while  (e1.MoveNext())
    {
        
if  (e1.Value.ToString().CompareTo(strUserName)  ==   0 )
        {
            flag 
=   true ;
            
break ;
        }
    }
    
return  flag;

}

 


 

 2、用户登录事件处理:

ExpandedBlockStart.gif 代码
private   void  btnlogin_Click( object  sender, System.Web.UI.ImageClickEventArgs e)

    
// User为自定义的类,其中包含Login要领 
    User CurUser  =   new  User();
    CurUser.UserName 
=   this .username.Text.Trim();

    
if  (MyUtility.AmIOnline(CurUser.UserName, (Hashtable) Application[ " Online " ]))
    {



                    response.write(
" <script>alert('您所运用 的登录ID已经在线了!您不能重复登录!');</script> " ); 


        
return ;

    }

          
else   

      { 
      Hashtable h 
=  (Hashtable) Application[ " Online " ];       

        
if  (h  ==   null )           

        h 
=   new  Hashtable();       

        h[Session.SessionID] 
=  CurUser.UserName;      

        Application[
" Online " =  h;

          }

 




 


 

3、在Global.asax中的Session_End事件:

ExpandedBlockStart.gif 代码
protected   void  Session_End(Object sender, EventArgs e)
{
    Hashtable h 
=  (Hashtable) Application[ " Online " ];

    
if  (h[Session.SessionID]  !=   null )
        h.Remove(Session.SessionID);

    Application[
" Online " =  h;
}

 

根据网上资料提纯了一下、关键是思路!

<逆水行舟,不进则退>

转载于:https://www.cnblogs.com/s7mmersupport/archive/2009/12/03/1616259.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值