由于某些原因,在我们的应用中会遇到一个用户只能在一个地方登录的情况,也就是我们通常所说的单点登录。在ASP.NET中实现单点登录其实很简单,下面就把主要的方法和全部代码进行分析。
实现思路
利用Cache的功能,我们把用户的登录信息保存在Cache中,并设置过期时间为Session失效的时间,因此,一旦Session失效,我们的Cache也过期;而Cache对所有的用户都可以访问,因此,用它保存用户信息比数据库来得方便。
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();//这段主要是为了避免不必要的错误导致不能登录
需要登录验证的所有应用都通过在web.xml里面配置filter:有需要jar包cas-client-core-3.3.3.jar及log相关的jar包以下filter的配置顺序是固定的不能改变AuthenticationFilterTic…
背景:随着前端框架发展,很多前端应用都采用AngularJS去实现前端门户,如何利用OAM实现前端门户的单点就是一个问题了,众所周知,如果是ADF开发的程序或者是Oracle的产品需要实现SSO,相对来说简单很多,下面是用OAM实现Angu…
在web开发时,有的系统要求同一个用户在同一时间只能登录一次,也就是如果一个用户已经登录了,在退出之前如果再次登录的话需要报错。常见的处理方法是,在用户登录时,判断此用户是否已经在Application中存在,如果存在就报错,不存在的话就加…
MD5加密,Parameters防止SQL注入:protectedvoidbtnLog_Click(objectsender,EventArgse){//获取验证码stringcode=txtCode.Text;//判断用户输入的验证码是否…
添加UserAuthorizeAttribute:///<summary>///跳过属性检查///</summary>[AttributeUsage(AttributeTargets.Class|AttributeT…
VB.Net+asp.net的一个web系统,使用SQL2000数据库。一开始连接用户数大概有几十个,运行了大一年没有出现什么问题。后来连接数增加到上百个(800)左右,现在运行时偶尔会出现一个奇怪现象,一个用户登录时,登录后的界面竟然是另…
假设一个网站有很多页面,如果用户没有登录,那么不允许访问网站里的任何页面,你打算怎么做?是不是要在每一个页面里都判断Session["UserName"]是否等于null?这样做也行,但是如果网站页面很多,就是不停的ctrl+c,ctrl+…
Web系统登录,身份认证,以及验证登录过期都是基本常用的,写了一个,就发出来吧。水平有限,代码写的烂,轻喷。1,新建Web项目,新建UserInfo类publicclassUserInfo{publicintId{get;set;}publ…