网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

ASP.NET 2.0 中的窗体身份验证详解

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/13
权配置

在 IIS 中,对所有使用窗体身份验证的应用程序启用异步访问。UrlAuthorizationModule 类用于帮助确保只有经过身份验证的用户才能访问页。

可以使用 authorization 元素配置 UrlAuthorizationModule,如以下示例所示。

<system.web>  <authorization>    <deny users="?" />  </authorization></system.web>

使用该设置将拒绝所有未经过身份验证的用户访问应用程序中的任何页。如果未经身份验证的用户试图访问某页,窗体身份验证模块将该用户重定向到 forms 元素的 loginUrl 属性指定的登录页。

窗体身份验证控制流

图 1 显示窗体身份验证期间出现的事件顺序。


1. 窗体身份验证控制流

用户请求应用程序的虚拟目录下的 Default.aspx 文件。因为 IIS 元数据库中启用了匿名访问,因此 IIS 允许该请求。ASP.NET 确认 authorization 元素包括 <deny users="?" /> 标记。

服务器查找一个身份验证 Cookie。如果找不到该身份验证 Cookie,则用户重定向到配置好的登录页 (Login.aspx),该页由 forms 元素的 LoginUrl 属性。用户通过该窗体提供和提交凭据。有关起始页的信息存放在使用 RETURNURL 作为密钥的查询字符串中。服务器 HTTP 应答如下所示:

302 Found Location: http://localhost/FormsAuthTest/login.aspx?RETURNURL=%2fFormAuthTest%2fDefault.aspx

浏览器请求 Login.aspx 页,并在查询字符串中包括 RETURNURL 参数。

服务器返回登录页以及 200 OK HTTP 状态代码。

用户在登录页输入凭据,并将该页(包括来自查询字符串的 RETURNURL 参数)发送回服务器。

服务器根据某个存储(如 SQL Server 数据库或 Active Directory 用户存储)验证用户凭据。登录页中的代码创建一个包含为该会话设置的窗体身份验证票的 Cookie。

在 ASP.NET 2.0 中,可以通过成员身份系统执行对用户凭据的验证。Membership 类为此提供了 ValidateUser 方法,如下所示:

if (Membership.ValidateUser(userName.Text, password.Text)){    if (Request.QueryString["ReturnUrl"] != null)    {        FormsAuthentication.RedirectFromLoginPage(userName.Text, false);    }    else    {        FormsAuthentication.SetAuthCookie(userName.Text, false);    }}else{    Response.Write("Invalid UserID and Password");}

使用 Login Web 服务器控件时,它自动为您执行以下步骤。下文使用了前面提供的代码。

对于经过身份验证的用户,服务器将浏览器重定向到查询字符串中的 RETURNURL 参数指定的原始 URL。服务器 HTTP 应答如下所示:

302 Found Location: http://localhost/TestSample/default.aspx

重定向之后,浏览器再次请求 Default.aspx 页。该请求包括身份验证 Cookie。

FormsAuthenticationModule 类检测窗体身份验证 Cookie 并对用户进行身份验证。身份验证成功后,FormsAuthenticationModule 类使用有关经过身份验证的用户的信息填充当前的 User 属性(由 HttpContext 对象公开)。

由于服务器已经验证了身份验证 Cookie,因此它允许访问并返回 Default.aspx 页。

FormsAuthenticationModule

ASP.NET 2.0 在计算机级 Web.config 文件中定义了一组 HTTP 模块,包括大量身份验证模块,如下所示:

<httpModules>    <add name="WindowsAuthentication"       type="System.Web.Security.WindowsAuthenticationModule" />  <add name="FormsAuthentication"        type="System.Web.Security.FormsAuthenticationModule" />  <add name="PassportAuthentication"        type="System.Web.Security.PassportA	 
			

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号