利用cache防止同一帐户重复登录
来源:互联网 发布:三国志13自创武将数据 编辑:程序博客网 时间:2024/04/30 12:17
需求概要
对于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 = "这个用户已经登录!";
}
}
{
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 = "这个用户已经登录!";
}
}
- 利用cache防止同一帐户重复登录
- 利用Cache防止同一帐号重复登录
- 利用Cache防止同一帐号重复登录 (c#)
- 利用Cache防止同一帐号重复登录 (c#)
- 如何防止同一帐户重复登录系统
- 如何防止同一帐户重复登录系统
- 如何防止同一帐户重复登录系统
- 如何防止同一帐户重复登录系统
- 如何防止同一帐户重复登录系统
- 如何防止同一帐户重复登录系统(ASP.net)
- 如何防止同一帐户重复登录系统(ASP.net)2
- 防止同一用户重复登录
- asp.net防止同一帐户重复登陆,查看在线人数
- php 如何防止同一帐户多个用户登录
- 防止同一用户重复登录思路
- 如何有效防止同一账户去重复登录系统
- ASP.NET 防止同一帐户同时登陆
- 利用Cache功能实现站点单点登录 防重复登录
- Function实现ALV Table六:页眉页脚
- 寻找
- lucene按时间排序 我在项目中的应用(三)
- jquery flot 实现JS画图表
- javascript动态创建控件的3种方法
- 利用cache防止同一帐户重复登录
- java图片验证代码
- win32API+C分析Windows消息运行原理
- (求助)用傲游上csdn博客时标签栏和网址栏一直显示"袁萌" 的头像
- eclipse 常用快捷键
- Struts下实现AJAX的小例子
- GridView模版列中控件的访问方法
- (转)国际:10个有趣的开源软件分支
- Oracle多表级联删除方法