文章类型: .NET
关键词: ASP.NET,2.0,Membership,Roles,Profile
内容摘要:

ASP.NET 2.0的Membership, Roles, 和Profile

2015/7/29 12:14:04    来源:apple    阅读:

ASP.NET 1.x中的窗体验证(forms-based authentication)提供了一个标准的方法来支持authentication ticket,来在不同页面请求之间记住用户登录状态。但它没有提供任何帮助来完成储存用户帐户信息和创建必须的页面(登录,创建用户等)ASP.NET 2.0中完成了1.x中窗体验证(forms-based authentication)未完成的最后一步,它支持编程方式验证、添加、创建、删除和修改用户帐户信息,更提供了Web 控件来帮助完成这些任务。2.0同样支持1.x版本中的窗体验证,像通过在web.config文件来进行授权配置。但2.0增加了membership这个APIweb安全控件。

 

    membership API是使用provider模型来实现的,这意味着只要接口定义恰当,具体的实现是可以定制的。.NET框架包含的Membership类包含了像CreateUser()GetAllUsers()ValidateUser()DeleteUser()等方法。但在使用这个API的时候真正被web应用程序调用的类是由程序的配置决定的。你可以通过创建一个实现了membershipAPI的类来实现自己的用户帐户逻辑,通过配置应用到web应用程序中。当然,你并不需要自定义一个类-ASP.NET内置了两个membership provider,一个用SQL Server数据库来存放用户帐户信息,另一个使用活动目录(Active Directory)。你可以使用其中之一,如果你已经自定义了用户信息,那么你可以创建一个定制的provider来使整个用户仓库无缝地应用同样的API和安全控件(更多信息参看A Look at ASP.NET 2.0S Provider Model)。

 

    SqlMembershipProvider-把用户帐户数据保存到SQL Server数据库

    为了使用这个提供器,必须先创建要用到的数据库模式。有两种方法:

    1 使用ASP.NET网站管理工具(Website Administration Tool),这种方法会在App_Data目录创建一个SQL Server 2005 数据库文件:ASPNETDB.mdf

    2 使用ASP.NETSQL Server注册命令行工具(aspnet_regsql.exe),适用于SQL Server 20002005

 

    使用网站管理工具,首先在Visual Studio中打开一个网站,在“网站”(Website)菜单选择“ASP.NET配置”(这样会打开一个新的网页)。进入“安全”标签页,把验证类型改成“从互联网”(From the internet)。这样就会在App_Data目录创建一个ASPNETDB.mdf的文件。你也可以使用网站管理工具来指定授权设置(更多信息参考:Website Administration Tool Overview)。

    当你把验证类型改成“从互联网”之后,web.config文件会出现这样一行:

 

view plainprint?

<authentication mode=”Forms”/> 

 

    如果你使用SQL Server注册工具来创建数据库,则需要手动添加这一行到web.config。另外如果你更改了ASPNETDB.mdf所在目录,那么你需要在web.config指定数据库连接字符串。

 

    SQL Server注册工具(aspnet_regsql.exe)是图形界面的,向导会让你指定把数据表放到哪里。(更多信息参看:technical documentation)。

 

    SqlMembershipProvider用两个相关的数据表来存储用户帐户信息:

    aspnet_Users: 每个用户一条记录。仅有必须的一些字段,其中UserId字段存放用户的唯一标识(uniqueidentifier-GUID)

 

 

     aspnet_Membership: 记录通过UserId字段绑定到aspnet_Users的对应记录。这个表保存帐户的相关信息如Email、密码、安全问题与答案等。

 

    定制SqlMembershipProvider

 

    如果你使用默认的配置,除了指定使用窗体验证和添加授权规则(可以手动或者用网站管理工具,语法和1.x一致)外,你不需要改动web.config文件的其它部分(更多信息可参见:Authentication and Autorization, Authorizing Users and Roles)。

 

 

    但如果你使用不同的数据库,或者改变会员设定(像email地址是否必须唯一,最小密码长度,密码加密方式,安全问题是否必须等)。你必须在web.config中手动加入一个XML块。注意,你应该指定一个硬编码的“applicationName”属性(更多信息参见Always set the applicationName property when configuring ASP.NET 2.0 Membership and other Providers)。

    下面的XML块是一个示例。<membership>部分是定制的设置。

 

view plainprint?

<configuration>   

  <connectionStrings>   

     <add name="MyDB" connectionString="..." />   

  </connectionStrings>   

  <system.web>   

    ... authentication & authorization settings ...   

 

    <membership defaultProvider="CustomizedProvider">   

      <providers>   

         <add name="CustomizedProvider"   

              type="System.Web.Security.SqlMembershipProvider"     

              connectionStringName="MyDB"   

              applicationName="ScottsProject"   

              minRequiredPasswordLength="5"   

              minRequiredNonalphanumericCharacters="0" />   

      </providers>   

    </membership>   

  </system.web>   

</configuration>  

 

    <membership>标记里面指定“CustomizedProvider”为默认的membership provider。这个定制的provider还是使用SqlMembershipProvider,它只是把connectionStringName改成MyDB,把applicationName改成ScottsProject,把minRequiredPaswordLength设为5,把minRequiredNonalphanumericCharacters设为0(更多可定制的标签可参看: <add> Element for Providers for Membership)。

 

    用网站管理工具来管理用户:一旦你配置了网站来使用membership系统,你就可以用网站管理工具来管理用户。在“安全”标签页创建用户,分配角色等。

 

    安全网页控件(Security Web Controls)概要

 

    ASP.NET 2.01.x的基础上增加了一些网页控件,有7个安全网页控件,它们提供用户帐户相关操作的用户界面。这些控件的底层都使用membership system。如果你自定义了一个membership provider,你一样可以使用它们。

    7个控件是:

    1. Login,示例如下:

 

 

    2. LoginView-是一个页面可以根据用户是否登录显示不同内容。包括两个模板(template): AnonymousTemplateLoggedInTemplate。只需要在着两个模板里指定不同的内容来显示。

 

 

    3. PasswordRecovery-允许用户通过邮箱来取回密码。如果密码是哈希加密的,那么用户会收到一个随机的新密码,如果密码是明文的或者(可逆)加密的,那么用户会收到密码原文。

 

 

    4. LoginStatus-这个简单的控件仅在页面显示“登入”和“登出”链接,区别于当前用户是否已经登录。

 

 

    5. LoginName-这个控件仅仅显示当前登录用户的用户名(username)。当前登录用户的用户名也可以通过代码取得(User.Identity.Name)

 

 

    6. CreateUserWizard-这个控件提供了创建用户的界面。示例如下:

 

        

 

    如何自定义这个控件的布局请参看:Customizing the CreateUserWizard Control

 

 

    7. ChangePassword-更改密码。

 

    全部这些控件可以不写一行代码就使用。如创建一个登录页面仅仅需要创建一个Login.aspx页面,然后把Login控件拖进页面。这篇文章末尾的下载包含一些演示怎样使用某些控件的页面。我们会在接下来的系列里详细讨论细节问题。

 

    by Evan www.cnevan.com

 

    membership system只是ASP.NET 2.0中用户帐户的一部分。还有roles system, profile system来提供基于角色的验证的支持。这些支持使得我们不用编写任何代码和创建任何数据表。在接下来的系列文章中,我们将讨论这些系统和安全网页控件的用法。

 

Happy Programming!

↑ 上一篇文章:ASP.NET profile 找不到存储过程 关键词:ASP.NET,profile,找不到存储过程 发布日期:2015/7/29 12:13:26
↓ 下一篇文章:进入ASP.NET MVC的世界 关键词:C#,aspx,ASP.NET,MVC,初识 发布日期:2015/7/29 12:17:58
相关文章:
ASP.NET profile 找不到存储过程 关键词:ASP.NET,profile,找不到存储过程 发布日期:2015-07-29 12:13
ASP.NET中的URL编码解码 关键词:ASP.NET,URL编码,解码 发布日期:2015-07-28 17:58
asp.net中Response.Redirect与Server.Transfer的区别分析 关键词:asp.net,Response,Redirect,Server,Transfer,区别分析 发布日期:2015-07-29 14:11
相关目录:.NET软件开发ANDROID
我要评论
正在加载评论信息......