ASP.NET 2.0 中Forms安全认证_实用技巧

即:使用 Membership 类 + FormsAuthentication 一起使用以创建的用户管理与认证的系统。
当然这两部分都可以单独使用,今天先着重后者,至于前者,我下一篇随笔将会写到。

ASP.NET 中提供了多种认证方式,比如大名鼎鼎的Windows 身份验证
Windows 身份验证模式根据 IIS 所提供的凭据将当前 User 属性值设置为 WindowsIdentity,但它不修改提供给操作系统的 Windows 标识。提供给操作系统的 Windows 标识用于进行权限检查(如 NTFS 文件权限检查)或者用于使用集成安全性连接到数据库。默认情况下,此 Windows 标识是 ASP.NET 进程的标识。在 Microsoft Windows 2000 和 Windows XP Professional 上,此标识是 ASP.NET 辅助进程的标识,即本地 ASPNET 帐户。在 Windows Server 2003 上,此标识是 ASP.NET 应用程序所属的 IIS 应用程序池的标识。默认情况下,此标识是 NETWORK SERVICE 帐户。
通过启用模拟功能,可以将 ASP.NET 应用程序的 Windows 标识配置为 IIS 所提供的 Windows 标识。也就是说,指示 ASP.NET 应用程序模拟 IIS 为 Windows 操作系统验证的所有任务(包括文件和网络访问)提供的标识。(解释来自MSDN Library)

还有一种常有的认证即是 Forms 身份验证
Forms 身份验证使不要求 Windows 身份验证的 Web 应用程序可以进行用户和密码验证。使用 Forms 身份验证时,用户信息存储在外部数据源中,例如Member 数据库,或存储在应用程序的配置文件中。在用户通过身份验证后,Forms 身份验证即会在 Cookie 或 URL 中维护一个身份验证票证,这样已通过身份验证的用户就无需在每次请求时都提供凭据了。

这样一来就方便也安全了,那具体怎么完成Forms身份认证的设置呢?

首先打开配置文件web.config
找到<system.web>节点下的 <authentication> 和 <authorization>节点加入
<system.web>
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<authentication>节点是设置认证方式,这里我们制定 Forms
<forms>节点内的属性可以制定 认证页面(登录页面)、默认页面、是否使用cookie、认证超时时间等等。
这里我们只指定认证页面 loginUrl="login.aspx"
<authorization> 节点是认证节点
<deny> 是否认节点 指定属性 users="?"即为未经过认证的人都需要去认证页面进行认证
与之对应的是<allow>允许节点

这样一来思路就清晰了,无论用户访问什么页面服务器会判断用户是否通过认证,如果没有转到认证页面。

下一步将要确定在login.aspx.cs文件中如何完成我们认证工作了
public void Login_OnClick(object sender, EventArgs args)
{
if (BLL.CheckLogin(this.Txbusername.Text,this.Txbuserpwd.Text ))
FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text,NotPublicCheckBox.Checked);
else
Msg.Text = "Login failed. Please check your user name and password and try again.";
}
这里的CheckLogin(用户名,密码) 方法是在逻辑层使用的验证用户是否合法的方法
当然如果用 Membership类继承的一些验证方法会更简单,但是在此不详细说明了。

FormsAuthentication 类(终于提到主人公了),它所属的命名空间为 System.Web.Security;
FormsAuthentication 是用来设置认证的类,如果用户合法,把用户名保存在cookie中,之后用户再次访问或访问其他页面都无需再次认证
它内部的常用方法有
RedirectFromLoginPage(用户名(string),是否把用户名长期保存在coolie中(bool))
将经过身份验证的用户重定向回最初请求的 URL 或默认 URL

SetAuthCookie(用户名(string),是否把用户名长期保存在coolie中(bool))
为提供的用户名创建一个身份验证票证,并将其添加到响应的 Cookie 集合或 URL
等等 方法很多,不详细列出了。

具体的使用或者深入的挖掘希望各位自己去探索了

时间: 2024-09-17 19:16:52

ASP.NET 2.0 中Forms安全认证_实用技巧的相关文章

ASP.NET 2.0 中的创建母版页_实用技巧

虽然母版页和内容页功能强大,但是其创建和应用过程并不复杂.本节和下一节将以创建如图1所示示例为例,向读者详细介绍,使用Visual Stuido 2005创建母版页和内容页的方法以及相关知识.本节的重点是创建母版页的方法. 母版页中包含的是页面公共部分,即网页模板.因此,在创建示例之前,必须判断哪些内容是页面公共部分,这就需要从分析页面结构开始.图1所示显示的是一个页面截图.在下文中,暂称该页面名为Index.aspx,并且假设其为某网站中的一页.通过分析可知,该页面的结构如图5所示. 图5 页

一个完整的ASP.NET 2.0 URL重写方案[翻译]_实用技巧

这篇文章描述了一个完整的 ASP.NET 2.0 URL 重写方案.这个方案使用正则表达式来定义重写规则并解决通过虚拟 URLs 访问页面产生回发事件的一些可能的困难. 为什么要重写 URL ? 将 URL 重写方法应用到你的 ASP.Net 应用程序的两个主要原因是:可用性和可维护性. 可用性 谁都知道,相对于难于辨认的带参数的长的查询路径,用户更喜欢一些短的.简洁的 URL.任何时候,一个容易记住和敲入的路径比添加到收藏夹更有用.其次,当一个浏览器的收藏夹不可用时,记住的地址总比在搜索引擎中

asp.net mvc3.0安装失败如何解决_实用技巧

先来看看安装失败的截图 原因分析 因为vs10先安装了sp1补丁,然后安装的mvc3.0,某些文件被sp1补丁更改,导致"VS10-KB2483190-x86.exe"安装不了,造成安装失败. 解决方案 方法1: 解压mvc安装包(AspNetMVC3Setup.exe)找到parameterinfo.xml文件,删除里面"<Exe CanonicalTargetName="VS10-KB2483190-x86".....</Exe>&q

ASP.NET 2.0,C#----图像特效处理_实用技巧

利用.NET 提供的类,如Drawing.Bitmap ,Drawing.Bitmap 等,很容易就可以实现对图片的简单处理.包括打水印,放大缩小,等操作. public partial class WebForm4 : System.Web.UI.Page      {          // 原始图片路径          private string path;          private System.Drawing.Bitmap bitmap;               pri

Asp.Net Couchbase Memcached图文安装调用开发_实用技巧

安装服务端 服务端下载地址:http://www.couchbase.com/download 选择适合自己的进行下载安装就可以了,我这里选择的是Win7 64. 在安装服务端如果发生如下所示的错误,我在win7 64安装的过程中就遇到了. 这个时候可以先撤销安装.通过CMD命令运行regedit.展开HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\ CurrentVersion分支,在窗口的右侧区域找到名为"ProgramFilesDir"

asp.net中穿透Session 0 隔离(一)_实用技巧

Windows 服务在后台执行着各种各样任务,支持着我们日常的桌面操作.有时候可能需要服务与用户进行信息或界面交互操作,这种方式在XP 时代是没有问题的,但自从Vista 开始你会发现这种方式似乎已不起作用. Session 0 隔离实验 下面来做一个名叫AlertService 的服务,它的作用就是向用户发出一个提示对话框,我们看看这个服务在Windows 7 中会发生什么情况. 复制代码 代码如下: using System.ServiceProcess; using System.Wind

asp.net中穿透Session 0 隔离(二)_实用技巧

对于简单的交互,服务可以通过WTSSendMessage 函数,在用户Session 上显示消息窗口.对于一些复杂的UI 交互,必须调用CreateProcessAsUser 或其他方法(WCF..NET远程处理等)进行跨Session 通信,在桌面用户上创建一个应用程序界面. WTSSendMessage 函数 如果服务只是简单的向桌面用户Session 发送消息窗口,则可以使用WTSSendMessage 函数实现.首先,在上一篇下载的代码中加入一个Interop.cs 类,并在类中加入如下

详解ASP.NET Core Token认证_实用技巧

令牌认证(Token Authentication)已经成为单页应用(SPA)和移动应用事实上的标准.即使是传统的B/S应用也能利用其优点.优点很明白:极少的服务端数据管理.可扩展性.可以使用单独的认证服务器和应用服务器分离. 如果你对令牌(token)不是太了解,可以看这篇文章( overview of token authentication and JWTs) 令牌认证在asp.net core中集成.其中包括保护Bearer Jwt的路由功能,但是移除了生成token和验证token的部

ASP.NET Core 1.0实现邮件发送功能_实用技巧

准备将一些项目迁移到 asp.net core 先从封装类库入手,在遇到邮件发送类时发现在 asp.net core 1.0中并示提供SMTP相关类库,于是网上一搜发现了MailKit  好东西一定要试一下,何况是开源,下面是代码可实现SMTP邮件发送:  using MailKit.Net.Smtp; using MailKit.Security; using MimeKit; using System.Threading.Tasks; namespace ConsoleApp1 { publ