初识MemberShip类

      已经用2005做开发两个多星期了。以前段时间的接触。虽然也接触了不少的新特性,譬如封装性的更进一步的体现,模板页的方便等等,但认为和2003没有太大的差别,今天接触到了Membership类。通过初步的了解。这是在ASP.NET2.0里新加的一个类,为方便做权限管理而用的。下面把MSDN上的一些基本概念拿来填充自己的BLOG。嘿嘿。
      看到的别BS我。
      概念:
       

在 ASP.NET 应用程序中,Membership 类用于验证用户凭据并管理用户设置(如密码和电子邮件地址)。Membership 类可以独自使用,或者与 FormsAuthentication 一起使用以创建一个完整的 Web 应用程序或网站的用户身份验证系统。Login 控件封装了 Membership 类,从而提供一种便捷的用户验证机制。

Membership 类提供的功能可用于:

  • 创建新用户。

  • 将成员资格信息(用户名、密码、电子邮件地址及支持数据)存储在 Microsoft SQL Server 或其他类似的数据存储区。

  • 对访问网站的用户进行身份验证。可以以编程方式对用户进行身份验证,也可以使用 Login 控件创建一个只需很少代码或无需代码的完整的身份验证系统。

  • 管理密码,包括创建、更改、检索和重置密码等等。可以选择配置 ASP.NET 成员资格以要求一个密码提示问题及其答案来对忘记密码的用户的密码重置和检索请求进行身份验证。

虽然 ASP.NET 成员资格是 ASP.NET 中用来进行身份验证的独立功能,但它可以与 ASP.NET 角色管理集成来为站点提供授权服务。成员资格还可以与 ASP.NET 用户的 System.Web.Profile 集成,以提供可为各个用户量身订做的特定于应用程序的自定义实现。有关详细信息,请参见 了解角色管理ASP.NET 配置文件属性概述

Membership 类依赖于成员资格提供程序与数据源通信。.NET Framework 包括一个 SqlMembershipProvider(将用户信息存储在 Microsoft SQL Server 数据库中)和一个 ActiveDirectoryMembershipProvider(允许在 Active Directory 或 Active Directory 应用程序模式 (ADAM) 服务器上存储用户信息)。还可以实现一个自定义成员资格提供程序与可由 Membership 类使用的其他类似的数据源进行通信。自定义成员资格提供程序将继承 MembershipProvider 抽象类。有关更多信息,请参见 实现成员资格提供程序

默认情况下,ASP.NET 成员资格可支持所有 ASP.NET 应用程序。默认成员资格提供程序为 SqlMembershipProvider 并在计算机配置中以名称 AspNetSqlProvider 指定。SqlMembershipProvider 的默认实例配置为连接到 Microsoft SQL Server 的一个本地实例。

可以通过修改默认设置将一个非 AspNetSqlProvider 实例的 SqlMembershipProvider 指定为默认提供程序,或使用 Web.config 文件将自定义提供程序的实例指定为 ASP.NET 应用程序的默认提供程序。可以使用 Web.config 文件中 membership 配置节来为 Web 应用程序指定 ASP.NET 成员资格配置。可以使用 membership 节的 providers 子节来指定默认提供程序之一以外的成员资格提供程序。

    配置例程:
下面的 membership 节从当前应用程序配置中移除默认成员资格提供程序并添加一个名为 SqlProvider 的新提供程序,它连接到名为 MySqlServer 的 SQL Server 实例。

<configuration>
  
<connectionStrings>
    
<add name="SqlServices" connectionString="Data Source=MySqlServer;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />
  
</connectionStrings>
  
<system.web>
    
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
      
<providers>
        
<remove name="AspNetSqlProvider" />
        
<add name="SqlProvider"
          type
="System.Web.Security.SqlMembershipProvider"
          connectionStringName
="SqlServices"
          enablePasswordRetrieval
="false"
          enablePasswordReset
="true"
          requiresQuestionAndAnswer
="true"
          passwordFormat
="Hashed"
          applicationName
="/" />
      
</providers>
    
</membership>
  
</system.web>
</configuration>

下面的代码示例演示配置为使用 Forms 身份验证和 ASP.NET 成员资格的 ASP.NET 应用程序的登录页。如果提供的用户凭据无效,则会向用户显示一条消息。否则,使用 RedirectFromLoginPage 方法将用户重定向到最初请求的 URL。

 

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>

<script runat="server">

public void Login_OnClick(object sender, EventArgs args)
{
   
if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
      FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
   
else
     Msg.Text 
= "Login failed. Please check your user name and password and try again.";
}



</script>

<html>
<head>
  
<title>Login</title>
</head>
<body>

<form runat="server">
  
<h3>Login</h3>

  
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><P>

  Username: 
<asp:Textbox id="UsernameTextbox" runat="server" /><BR>
  Password: 
<asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /><BR>
 
  
<asp:Button id="LoginButton" Text="Login" OnClick="Login_OnClick" runat="server" />
  
<asp:CheckBox id="NotPublicCheckBox" runat="server" /> Check here if this is <u>not</u> a public computer.

</form>

</body>
</html>


    

posted on 2006-08-21 20:50  刘荣华  阅读(754)  评论(1编辑  收藏  举报

导航