论文部分内容阅读
摘要:登录机制控制着用户的访问权限,关系到整个网站的安全,因此在许多书籍和开放的实例代码中,仅简单的介绍了使用Session的方法,而对于其他方法很少涉及。本文对常用的三种登录机制进行探讨。
关键词:登录机制;ASP.NET;表单认证
中图分类号:TP393.092 文献标识码:A文章编号:1007-9599 (2011) 12-0000-02
Three Login Mechanisms Comparison of Forms Authentication
Based on ASP.NET
Li Rui,Lv Qiong
(Qujing Normal University,College of Physics and Electronic Engineering,Qujing650011,China)
Abstract:Login mechanisms controlled the user’s access rights and related to the security of the entire site.In many books and opening codes,it only simply said the way of using Session,while for the other methods were rarely involved.Three common login mechanisms were discussed in the paper.
Keywords:Login Mechanisms;ASP.NET;Forms Authenticaiton
一、引言
会员登录是网站开发中最基本的环节,主要包括身份信息验证和验证码技术。验证码技术可以阻止用户的非法操作,在此不做讨论。身份信息验证的过程就是将客户端用户输入的身份信息发送回服务器,服务器对身份信息验证后进行相应的处理,对于合法用户的信息将进行“记录”,“记录”的方式主要有三种,本文对此进行讨论。
二、三种登录机制的实现
登录机制在设计时主要有三种机制,一种就是会话(Session)机制,是最简单的一种方法;另一种是使用的Cookie的机制,这是一种比较常用的方法;还有一种是缓存(Cache)机制,可以控制一个用户在同一个网站只能登录一次,避免一个用户名在多个地址进行登录。
下面分别讨论三种登录机制的具体实现方式,测试环境:Windows XP SP3,Microsoft Visual Studio 2005。
(一)页面设计
登录页面仅作简单设计,页面效果如图1:
图1:登录页面效果图
(二)后台代码
1.会话(Session)机制
Session直接翻译成中文比较困难,一般都译成时域。在ASP.NET中Session是用于保持状态的基于Web服务器的方法。Session允许通过将对象存储在Web服务器的内存中在整个用户会话过程中保持任何对象[1]。其使用方式比较简单,主要代码如下:
(1)登录页面(Login.aspx)后台代码
if(登录信息验证正确)
{
Session[“username”]=用户名;//和服务器联系,建立身份信息
Response.Redirect(“Request.aspx”);//跳转到请求访问的页面[Request.aspx]
}
else
{
Response.Write(“”);//跳出登录错误警告
}
(2)请求访问页面(Request.aspx)后台代码
protected void Page_Load(object sender,EventArgs e)//页面载入时发生事件
{
if(Session[“Username”]==null)
Response.Redirect(“Login.aspx”);//如果缺少身份信息,跳转回登录页面
}
2.Cookie机制
Cookie有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于RFC2109(已废弃),最新取代的规范是RFC2965[2]。对于这种登录方式,在ASP.NET中有专门的类来管理和实现,主要代码如下:
(1)登录页面(Login.aspx)后台代码[3]
if(登录信息验证正确)
{
Forms Authentication Ticket ticket=new Forms Authentication Ticket(1,uid,
DateTime.Now,Date Time.Now.Add Minutes(30),false,urole,
Forms Authentication.Forms Cookie Path);//建立身份认证票据
string enc Ticket=Forms Authentication.Encrypt(ticket);//加密身份认证票据
Http Cookie hc=new Http Cookie(Forms Authentication.Forms CookieName,encTicket);
Reponse.Cookies.Add(hc);//创建Cookie,并和服务器进行注册
Response.Redirect(“Request.aspx”);//跳转到请求访问的页面[Request.aspx]
}
else
{
Response.Write(“”);//弹出登录错误警告
}
(2)请求访问页面(Request.aspx)后台代码
protected void Page_Load(object sender,Event Args e)//页面载入时发生事件
{
if(Request.Cookies[Forms Authentication.Forms Cookie Name]==null)
Response.Redirect(“Login.aspx”);//如果缺少身份信息,跳转回登录页面
}
3.缓存(Cache)机制
在ASP.NET中,Cache对象主要用于Web应用程序的缓存。对于每个应用程序都需要创建一个Cache对象的一个实例,并且只要对应的应用程序域保持活动,则该实例就有效。这里的实现方式是把用户的登录信息保存到Cache对象中,并设置过期时间为Session变量失效时间,因此一旦Session变量失效,则Cache对象就会过期。主要代码如下[4]:
(1)登录页面(Login.aspx)后台代码
if(登录信息验证正确)
{
string str_key=”登录名”+”_”+”登录密码”;//创建登录信息唯一标识
string str_user=Convert.ToString(Cache[str_key]);//获取Cache中相应的值
if(str_user==String.Empty)//如果没有该值,表明没有登录或已超时
{
TimeSpan SessTimeOut=new TimeSpan(0,0,HttpContext.Current.Session.TimeOut,0,0);//设置时间间隔
HttpContext.Current.Cache.Insert(str_key,str_key,null,DateTime.MaxValue,SessTimeOut,CacheItemPriority.NotRemovable,null);//将登录信息加入缓存
Session[“Username”]=str_key;//和服务器联系,建立身份信息
}
Response.Redirect(“Request.aspx”);//跳转到请求访问的页面[Request.aspx]
}
else
{
Response.Write(“”);//跳出登录错误警告
}
(2)请求访问页面(Request.aspx)后台代码
protected void Page_Load(object sender,EventArgs e)//页面载入时发生事件
{
if(Session[“Username”]==null)
Response.Redirect(“Login.aspx”);//如果缺少身份信息,跳转回登录页面
}
三、三种登录机制的比较
登录机制 特点 实现难易程度 服务器开销 执行效率
Session 实现简单,单次使用 简单 中 快
Cookie 存于客户端,服务器开销小,可以长期有效,简化下次登录 难 小 慢
Cache 避免用户多处登录 一般 大 中
四、结束语
登录机制的使用需根据网站的设计选择使用,对于安全性要求较低、服务器性能不高的网站可以选择较简单的方式;而对于安全性要求较高、服务器性能较高的网站可以混合使用。
参考文献:
[1]百度百科.Session[EB/OL].2010,3:7
http://baike.baidu.com/view/25258.htm
[2]百度百科.Cookie[EB/OL].2010,4:2
http://baike.baidu.com/view/835.htm
[3]微软.MSDN库[EB/OL].2010,5:28
http://msdn.microsoft.com/zh-cn/library/ms123401.aspx
[4]周峰,王征.ASP.NET 3.5网络程序设计案例集锦[M].北京:中国水利水电出版社,2009,4:478-483
[基金项目]云南省教育厅科学研究基金项目“高校物理实验预约管理系统的设计和开发”(08Y0306)
曲靖师范学院专项研究项目“曲靖师范学院网上物理实验预习系统开发”(2008ZX004)
[作者简介]李锐(1980-),男,讲师,计算机硕士,主要从事计算机技术和教育技术方面的研究。
关键词:登录机制;ASP.NET;表单认证
中图分类号:TP393.092 文献标识码:A文章编号:1007-9599 (2011) 12-0000-02
Three Login Mechanisms Comparison of Forms Authentication
Based on ASP.NET
Li Rui,Lv Qiong
(Qujing Normal University,College of Physics and Electronic Engineering,Qujing650011,China)
Abstract:Login mechanisms controlled the user’s access rights and related to the security of the entire site.In many books and opening codes,it only simply said the way of using Session,while for the other methods were rarely involved.Three common login mechanisms were discussed in the paper.
Keywords:Login Mechanisms;ASP.NET;Forms Authenticaiton
一、引言
会员登录是网站开发中最基本的环节,主要包括身份信息验证和验证码技术。验证码技术可以阻止用户的非法操作,在此不做讨论。身份信息验证的过程就是将客户端用户输入的身份信息发送回服务器,服务器对身份信息验证后进行相应的处理,对于合法用户的信息将进行“记录”,“记录”的方式主要有三种,本文对此进行讨论。
二、三种登录机制的实现
登录机制在设计时主要有三种机制,一种就是会话(Session)机制,是最简单的一种方法;另一种是使用的Cookie的机制,这是一种比较常用的方法;还有一种是缓存(Cache)机制,可以控制一个用户在同一个网站只能登录一次,避免一个用户名在多个地址进行登录。
下面分别讨论三种登录机制的具体实现方式,测试环境:Windows XP SP3,Microsoft Visual Studio 2005。
(一)页面设计
登录页面仅作简单设计,页面效果如图1:
图1:登录页面效果图
(二)后台代码
1.会话(Session)机制
Session直接翻译成中文比较困难,一般都译成时域。在ASP.NET中Session是用于保持状态的基于Web服务器的方法。Session允许通过将对象存储在Web服务器的内存中在整个用户会话过程中保持任何对象[1]。其使用方式比较简单,主要代码如下:
(1)登录页面(Login.aspx)后台代码
if(登录信息验证正确)
{
Session[“username”]=用户名;//和服务器联系,建立身份信息
Response.Redirect(“Request.aspx”);//跳转到请求访问的页面[Request.aspx]
}
else
{
Response.Write(“”);//跳出登录错误警告
}
(2)请求访问页面(Request.aspx)后台代码
protected void Page_Load(object sender,EventArgs e)//页面载入时发生事件
{
if(Session[“Username”]==null)
Response.Redirect(“Login.aspx”);//如果缺少身份信息,跳转回登录页面
}
2.Cookie机制
Cookie有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于RFC2109(已废弃),最新取代的规范是RFC2965[2]。对于这种登录方式,在ASP.NET中有专门的类来管理和实现,主要代码如下:
(1)登录页面(Login.aspx)后台代码[3]
if(登录信息验证正确)
{
Forms Authentication Ticket ticket=new Forms Authentication Ticket(1,uid,
DateTime.Now,Date Time.Now.Add Minutes(30),false,urole,
Forms Authentication.Forms Cookie Path);//建立身份认证票据
string enc Ticket=Forms Authentication.Encrypt(ticket);//加密身份认证票据
Http Cookie hc=new Http Cookie(Forms Authentication.Forms CookieName,encTicket);
Reponse.Cookies.Add(hc);//创建Cookie,并和服务器进行注册
Response.Redirect(“Request.aspx”);//跳转到请求访问的页面[Request.aspx]
}
else
{
Response.Write(“”);//弹出登录错误警告
}
(2)请求访问页面(Request.aspx)后台代码
protected void Page_Load(object sender,Event Args e)//页面载入时发生事件
{
if(Request.Cookies[Forms Authentication.Forms Cookie Name]==null)
Response.Redirect(“Login.aspx”);//如果缺少身份信息,跳转回登录页面
}
3.缓存(Cache)机制
在ASP.NET中,Cache对象主要用于Web应用程序的缓存。对于每个应用程序都需要创建一个Cache对象的一个实例,并且只要对应的应用程序域保持活动,则该实例就有效。这里的实现方式是把用户的登录信息保存到Cache对象中,并设置过期时间为Session变量失效时间,因此一旦Session变量失效,则Cache对象就会过期。主要代码如下[4]:
(1)登录页面(Login.aspx)后台代码
if(登录信息验证正确)
{
string str_key=”登录名”+”_”+”登录密码”;//创建登录信息唯一标识
string str_user=Convert.ToString(Cache[str_key]);//获取Cache中相应的值
if(str_user==String.Empty)//如果没有该值,表明没有登录或已超时
{
TimeSpan SessTimeOut=new TimeSpan(0,0,HttpContext.Current.Session.TimeOut,0,0);//设置时间间隔
HttpContext.Current.Cache.Insert(str_key,str_key,null,DateTime.MaxValue,SessTimeOut,CacheItemPriority.NotRemovable,null);//将登录信息加入缓存
Session[“Username”]=str_key;//和服务器联系,建立身份信息
}
Response.Redirect(“Request.aspx”);//跳转到请求访问的页面[Request.aspx]
}
else
{
Response.Write(“”);//跳出登录错误警告
}
(2)请求访问页面(Request.aspx)后台代码
protected void Page_Load(object sender,EventArgs e)//页面载入时发生事件
{
if(Session[“Username”]==null)
Response.Redirect(“Login.aspx”);//如果缺少身份信息,跳转回登录页面
}
三、三种登录机制的比较
登录机制 特点 实现难易程度 服务器开销 执行效率
Session 实现简单,单次使用 简单 中 快
Cookie 存于客户端,服务器开销小,可以长期有效,简化下次登录 难 小 慢
Cache 避免用户多处登录 一般 大 中
四、结束语
登录机制的使用需根据网站的设计选择使用,对于安全性要求较低、服务器性能不高的网站可以选择较简单的方式;而对于安全性要求较高、服务器性能较高的网站可以混合使用。
参考文献:
[1]百度百科.Session[EB/OL].2010,3:7
http://baike.baidu.com/view/25258.htm
[2]百度百科.Cookie[EB/OL].2010,4:2
http://baike.baidu.com/view/835.htm
[3]微软.MSDN库[EB/OL].2010,5:28
http://msdn.microsoft.com/zh-cn/library/ms123401.aspx
[4]周峰,王征.ASP.NET 3.5网络程序设计案例集锦[M].北京:中国水利水电出版社,2009,4:478-483
[基金项目]云南省教育厅科学研究基金项目“高校物理实验预约管理系统的设计和开发”(08Y0306)
曲靖师范学院专项研究项目“曲靖师范学院网上物理实验预习系统开发”(2008ZX004)
[作者简介]李锐(1980-),男,讲师,计算机硕士,主要从事计算机技术和教育技术方面的研究。