知识大全 抢先试用ASP.NET 2.0中的新型安全控件

Posted

篇首语:行是知之始,知是行之成。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 抢先试用ASP.NET 2.0中的新型安全控件相关的知识,希望对你有一定的参考价值。

抢先试用ASP.NET 2.0中的新型安全控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一 引言

  与ASP NET 一同上市的有几个新的安全控件 它们位于工具的Login选项卡中(见图 ) 这些控件大大简化了Web开发人员的工作 通过使用这些新的安全控件 现在你可以执行例如用户登录 注册 口令改变等的任务 而且 为此做出的努力仅是拖放相应的控件到你的Web表单上去 在本文中 我将向你展示怎样使用这些新控件来实现用户认证

  首先 让我们探索一下LoginView LoginStatus和LoginName三个控件的使用 首先 让我们使用Visual Studio Beta 构建一个Web工程 启动Visual Studio IDE 然后从文件菜单中点击 New Web Site 以创建一个新的Web工程 并命名工程为 C:\\SecurityControls

  在Default aspx Web表单上 拖放并加入一个LoginView控件 该LoginView控件是一个容器控件 用于根据用户是否已登录显示不同的信息

  首先 我们用文本填充LoginView控件 如图 所示 然后 把Login控件拖拽到LoginView控件上 在用户还没有被认证(匿名)之前 你刚输入的文本将被显示 该Login控件显示一个链接以允许用户被重定向到另一个页面以登录到应用程序

  在LoginView控件的 Smart Tasks 菜单上 把视图改变为 LoggedInTemplate (见图 )

  随后改变视图 把在图 中显示的文本输入到LoginView控件 一旦用户被认证该文本即被显示 然后 把LoginName控件拖放到LoginView控件之中 该LoginName控件将显示用于登录到应用程序的用户名

  

>

  图 该图显示ASP NET 中新型安全控件

  

>

  图 图显示填充LoginView控件的过程

  

>

  图 你可以改变LoginView控件的显示形式

  

>

  图 在用户被认证后该文本显示出来

  二 使用Login控件

  现在让我们添加一新的Web表单到该工程(在解决方案资源管理器中右击工程名称并且选择 Add New Item )并且命名为Login aspx 你的应用程序将使用这个表单来允许用户登录到该应用程序

  注意 在ASP NET 中 默认登录页面命名为Login aspx(这是被默认加入到ASP NET 中的并可以通过查看ments进行校验)

  然而 如果你确实想为你的登录页面使用一不同的命名 你可以通过增加下列的几行来修改nfig文件 你可以改变认证方式 从缺省的Login aspx改变为Authenticate aspx:

  <system web>

  <authentication mode= Forms >

  <forms name= ASPXAUTH

  loginUrl= Authenticate aspx

  protection= Validation timeout= />

  </authentication>

  

  

>

  图 应用AutoFormat:这是一种应用格式到Login控件的方法

  

>

  图 增加一个模式:这是在应用彩色模式后的Login控件样式

  把Login控件拖到Login aspx上 你可以应用格式到Login控件以使它看起来更专业化 点击Login控件的 Smart 标签并且选择 Auto Format 链接(见图 )

  选择彩色模式之后 Login控件应该看上去如图 所示

  默认情况下 ASP NET 使用Windows认证 如果你针对互联网用户那么这种方式不够灵活 因此 你应该把认证方式从默认的Windows方式改变到表单认证方式

  添加一个nfig文件到你的工程(在工程名字上单击右键 在解决方案资源管理器中并选择 Add New Item 从可用的列表选项中选择 Web Configuration File )

  在nfig中 通过增加下列的几行代码 从Windows认证方式改变到表单认证方式 你使用表单认证 这样你可以添加用户到你的Web站点而不需要在Windows下创建新的用户帐户

  <system web>

  <authentication mode= Forms />

  

   

  三 把一新用户添加到你的应用程序

  在你继续测试该应用程序之前 你需要为该应用程序创建一新用户 你可以使用ASP NET Web站点管理工具(WAT)来添加一新用户到你的应用程序 为了激活WAT 选择 Website 然后选择 ASP NET Configuration (见图 )

  

>

  图 Web站点管理:该图显示怎样激活WAT

  该WAT将被显示在一新的网页中 点击 Security 链接跳转到 Security 选项卡(见图 )

  

>

  图 WAT:这里显示出WAT的用户接口

  这个 Security 选项卡允许你执行任务 例如创造并删除用户 以及为你的应用程序创建角色和存取规则 点击 Create user 链接以添加一新用户到你的应用程序(见图 )

  

>

  图 WAT安全:选择WAT中的 Security 选项卡能够让你管理安全特性

  为该新建用户帐户提供必需的信息(见图 ) 注意 这里的口令必须是数字 字母和特殊的字符的结合 请确保至少为该口令提供 个字符 点击 Create User 以添加一个新用户

  

>

  图 增加用户:该图显示出WAT安全屏幕 在此你可以添加新的用户帐户

  现在你已准备好测试该应用程序了 在解决方案资源管理器中选择Default aspx 然后按下F 键 点击 Login 链接以登录到应用程序中 然后输入帐户信息 当你成功地登录到应用程序时 Login 链接改变为 Logout 图 显示出这些事件顺序

  

>

  图 登录:这三个屏幕显示在用户登录到应用程序时的完整过程

  四 创建新用户

  你需要设置CreateUserWizard控件的ContinueDestinationPageURL属性 这样在用户点击 Continue 按钮时 它就能够被重定向到另一个页面 如一个欢迎页面

  除了为用户创建用户帐户外 你也可以允许用户为自己创建新帐户 这在有些场所下很有用 为了存取你的应用程序 例如在一个讨论论坛 你允许用户创建自由帐户

  为了允许用户创建新帐户 可以使用CreateUserWizard控件 把CreateUserWizard控件拖放到Default aspx并应用彩色模式 该控件看去应该如图 所示

  

>

  图 CreateUserWizard控件:这个控件让用户创建他们自己的新用户帐户

  为测试应用程序 可以按下键F 现在你自己可以创建一个新的用户帐户(见图 ) 提供必要的信息并点击 Create User

  五 用户信息的存储位置

  到目前为止 你已经看到了怎样使用WAT和CreateUserWizard控件来创建用户 你可能想知道这个信息被存储在哪儿 如果你现在查看解决方案资源管理器并且刷新App_Data文件夹(右键点击它并且选择刷新文件夹) 你就会看到一个名为ASPNETDB MDF的项(见图 )

  

>

  图 你将在解决方案资源管理器的此处找到ASPNETDB MDF数据库文件

  

>

  图 自动创建的用户:该图显示出一个用户创建一新的用户帐户

  在用户创建成功后 你会看到如图 所示的屏幕

  

>

  图 创建帐户:在创建一新帐户后 用户会看到此屏幕

  这个ASPNETDB MDF是一个SQL Server 速递数据库 默认地 ASP NET 使用之来存储应用程序相关的数据例如用户帐户 配置 等等 为了分析这个数据库 双击它则你会看到它的内容显示在Database Explorer中(见图 ) 具体地说 aspnet_Membership和aspnet_Users表格将用来存储你在前面创建的用户帐户信息 为了观看表格的内容 只须右击表格名字并选择 Show Table Data

  

>

  图 数据库ASPNETDB MDF:你可以在Database Explorer格子中探索ASPNETDB MDF数据库

  ASP NET 的一个很好的特点是不必要创建定制的数据库来存储你的用户的信息 并且你甚至不需要担心把用户的口令进行散列化处理来安全地存储它们 ASP NET 自动地为你做这件事情

   

  六 会员供给者模型工作原理

  ASP NET 使用一种新型的安全模型 称为会员供给者模型 这个模型通过使开发者能够选择添加安全特性到他们的应用程序的方式来允许最大程度的灵活性和扩展性

  作为这个供给者模型扩展性的一个实例 请考虑一下新的安全(登录)控件 你已在本文中看到过 这些控件 API以及构成该新模型的供给者显示于下图中

  

>

  图会员供给者模型:该图显示了本文所讨论的控件和会员供给者模型的各个层之间的关系

  在最顶层上是各种的Web服务器控件 例如Login LoginStatus和LoginView控件 在该控件下面是API 它们执行要求其完成的任务 Membership类负责处理如添加和删除用户等的任务 而MembershipUser类负责管理用户的信息如口令 口令问题 等等 这些会员API使用会员供给者来保存或进行持续性存储 Visual Studio 与一个缺省的会员供给者一同发行 SQL Server Express Membership Provider 会员供给者的角色是充当会员API和数据存储之间的桥梁 以便信息能够被持续性存储而不需要开发者编写低层代码来存取数据

  如果微软提供的供给者不能满足你的需要 你或者可以扩展它们或者编写你自己的 例如 如果你想要用一个XML文档而不是一个关系数据库(例如SQLServer)来保存你的站点的会员信息 你可以编写你自己的供给者来实现与XML文件的对话

  七 恢复丢失的口令

  恢复/清除丢失的口令是你 作为一个管理员需要执行的一项普通任务 PasswordRecovery控件允许用户自己执行这项普通任务 通过自动地检索口令然后用电子邮件把它发送给用户

  仅在你以普通文本存储口令而不是对口令的散列值进行存储时 口令恢复才是重要的 然而 默认情况下 在nfig文件中的设置指定所有的口令 在把它们存储到成员数据库之前 要被散列化处理 nfig默认情况下也不允许口令恢复

  为了在普通文本中存储用户口令 你可以在文件nfig中添加下列入口

  

  <system web>

  <membership

  defaultProvider= SqlProvider

  userIsOnlineTimeWindow= >

  <providers>

  <clear />

  <add

  name= SqlProvider

  type= System Web Security SqlMembershipProvider

  connectionStringName= LocalSqlServer

  applicationName= SecurityControls

  enablePasswordRetrieval= true

  enablePasswordReset= true

  requiresQuestionAndAnswer= true

  requiresUniqueEmail= true

  passwordFormat= Clear />

  </providers>

  </membership>

  

  具体地说 你现在清除了所有的会员供给者 然后添加一个新的SqlMembershipProvider 注意 为了允许口令检索 你需要设置enablePasswordRetrieval(为真)和passwordFormat(清除之)属性

  如果你设置了passwordFormat为散列化的 那么你必须把enablePasswordReset设置成假

  现在拖动PasswordRecovery控件到Default aspx 然后应用彩色模式 该PasswordRecovery控件现在看起来象图

  

>

  图 PasswordRecovery控件 通过使用这个控件 用户能够恢复他们忘记的口令

  在PasswordRecovery控件的属性窗口中 设置MailDefinition属性下的 From 和 Subject 字段 如图 所示

  

>

  图 PasswordRecovery控件属性:如何在属性浏览器中 配置你的PasswordRecovery控件

  另外 你需要在你的机器上配置好SMTP服务 以便用PasswordRecovery控件来发送一电子邮件 为在你的机器上配置该SMTP服务 启动WAT 选择应用程序 然后选择配置SMTP电子邮件设置

  为测试应用程序 按下F 键 你将被提示输入你的用户名 然后是你的安全问题 如果该安全问题的答案是正确的 那么口令将被以电子邮件形式发送给你 否则 在该页面将显示给你一错误消息 如图 所示

  

>

  图 恢复一丢失的口令:用户在恢复一个丢失的口令的过程中 会看到这个屏幕序列

  为了安全原因 通过电子邮件发送口令给用户不是一个好注意 因此 你确实需要小心地考虑使用这一选择

   

  八 改变口令

  除了恢复失去的口令外 你还需要允许用户改变他们的口令 在ASP NET 中 你可以通过使用ChangePassword控件来完成这项任务

  既然一个用户只有在登录后才能改变他们的口令 那么 你现在将要在你的应用程序(该程序仅为认证的用户所存取)中创建一新文件夹

  你可以添加一新文件夹到你的应用程序 通过右击解决方案资源管理器中的工程名 然后选择 Add Folder 再选择 Regular Folder 命名文件夹为 Members 现在 在该新文件夹上添加一新的表单(右击 Members 然后选择 Add New Item ) 命名该新建Web表单为ChangePassword aspx(见图 )

  

>

  图 这里显示的是在工程上增加文件夹后的解决方案资源管理器

  为限制到成员文件夹的存取 添加下列<location>元素到nfig

  

  </system web>

  <location path= Members >

  <system web>

  <authorization>

  <deny users= ? />

  </authorization>

  </system web>

  </location>

  </configuration>

  实质上 在成员文件夹中的页面只能为认证过的用户(所有的匿名用户(?)将被否认存取)所存取

  拖放ChangePassword控件到ChangePassword aspx之上并且应用彩色模式(见图 )

  

>

  图 ChangePassword控件:通过使用这个控件使你容易地实现让用户改变他们的口令

  为了测试该应用程序 在解决方案资源管理器的成员文件夹中选择ChangePassword aspx文件并且按下F 键 你将首先被重定向到login aspx页面(为了认证)并且一旦被认证 ChangePassword aspx页面将被装载 现在 你可以改变你的口令了(见图 )

  

> cha138/Article/program/net/201311/13242

相关参考

知识大全 ASP.NET 2.0 中的数据源控件

ASP.NET2.0中的数据源控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET引

知识大全 ASP.NET 2.0高级控件之FileUpload控件

ASP.NET2.0高级控件之FileUpload控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 ASP.NET 2.0服务器控件之验证控件示例

ASP.NET2.0服务器控件之验证控件示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在上

知识大全 ASP.NET入门教程 7.2 ASP.NET 2.0的数据控件

ASP.NET入门教程7.2ASP.NET2.0的数据控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 Asp.net 2.0 自定义控件开发

Asp.net2.0自定义控件开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  (一)概述  

知识大全 ASP.NET 2.0移动开发之列表控件

ASP.NET2.0移动开发之列表控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!概述  在很多

知识大全 ASP.NET 2.0服务器控件开发精要

ASP.NET2.0服务器控件开发精要  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  利用ASP

知识大全 在ASP.NET 2.0中使用页面导航控件

在ASP.NET2.0中使用页面导航控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  几乎每个

知识大全 Asp.net 2.0 为用户控件添加event

Asp.net2.0为用户控件添加event  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!使用us

知识大全 为ASP.NET 2.0菜单控件增加target属性

为ASP.NET2.0菜单控件增加target属性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!