• (转)利用Cache防止同一帐号重复登录 (c#) .


    (转)利用Cache防止同一帐号重复登录 (c#) .

    需求概要
    对于B/S应用系统中客户经常会提出同一帐号不能重复登录的需求,就是说,用某一帐号登录系统后,在系统不超时的情况下,任何人都不能再用目前已登录的帐号登录系统。包括我目前的项目中同样有这一需求。  

    其实要实现这个功能也不难,方法也有多种,比如用数据库来记录用户登录情况、用Application来保存用户登录信息、用Cache来保存信息等等。现在我们就来讨论一下如何利用缓存Cache方便地实现此功能。  

    解决方法
    我们都知道Cache与Session这二个状态对像的其中有一个不同之处,Cache是一个全局对象,作用的范围是整个应用程序,所有用户;而Session是一个用户会话对象,是局部对象,用于保存单个用户的信息。  

    我们只要把每次用户登录后的用户信息存储在Cache中,把Cache的Key名设为用户的登录名,Cache的过期时间设置为Session的超时时间,在用户每次登录的时候去判断一下Cache[用户名]是否有值,如果没有值,证明该用户没有登录,否则该用户已登录。具体实现请看下例:  

            private void Button1_Click(object sender, System.EventArgs e) 
            


                    
    string strUser=string.Empty;  
                    
    string strCacheKey = this.TextBox1.Text;  

                    strUser 
    = Convert.ToString(Cache[strCacheKey]); 

                    
    if(strUser == string.Empty)  
                    

                        TimeSpan SessTimeOut 
    = new TimeSpan(0,0,System.Web.HttpContext.Current.Session.Timeout,0,0); 

                        Cache.Insert(strCacheKey,strCacheKey,
    null,DateTime.MaxValue,SessTimeOut,CacheItemPriority.NotRemovable,null); 
                        Session[
    "User"= strCacheKey;  
                        
    this.Label1.Text = Session["User"].ToString();  
                    }

                    
    else
                    

                        
    this.Label1.Text = "这个用户已经登录!"
                    }

            }

    转自:http://blog.csdn.net/a9529lty/article/details/2010747

  • 相关阅读:
    mysql 性能优化方案
    MYSQL 优化常用方法
    MongoDB集群架构及搭建
    memcache分布式 [一致性hash算法] 的php实现
    memcache 的内存管理介绍和 php实现memcache一致性哈希分布式算法
    【转】linux 查看进程启动路径
    centos7 编译安装nginx+tcp+grpc转发
    mongodb笔记
    【转】mysql 解事务锁
    【转】centos7 搭建etcd集群
  • 原文地址:https://www.cnblogs.com/huanhuan86/p/2922579.html
Copyright © 2020-2023  润新知