}
}
有关修改 CreateUserWizard 控件以包括成员资格用户的其他用户信息的示例,请参见如何:自定义 ASP.NET CreateUserWizard 控件。
为成员资格用户数据创建数据存储区
您将需要为成员资格功能的用户身份验证信息以及自定义成员资格用户的其他用户信息提供一个数据存储区。
下面的代码示例演示一个查询,您可以在 Microsoft Access 数据库中运行该查询,以创建一个要存储自定义成员资格用户的身份验证信息和属性值的表。
复制代码CREATE TABLE Users
(
PKID Guid NOT NULL PRIMARY KEY,
Username Text (255) NOT NULL,
ApplicationName Text (255) NOT NULL,
Email Text (128) NOT NULL,
Comment Text (255),
Password Text (128) NOT NULL,
PasswordQuestion Text (255),
PasswordAnswer Text (255),
IsApproved YesNo,
LastActivityDate DateTime,
LastLoginDate DateTime,
LastPasswordChangedDate DateTime,
CreationDate DateTime,
IsOnLine YesNo,
IsLockedOut YesNo,
LastLockedOutDate DateTime,
FailedPasswordAttemptCount Integer,
FailedPasswordAttemptWindowStart DateTime,
FailedPasswordAnswerAttemptCount Integer,
FailedPasswordAnswerAttemptWindowStart DateTime,
IsSubscriber YesNo,
CustomerID Text (64)
)
创建自定义成员资格提供程序
您将需要创建一个自定义成员资格提供程序,该提供程序支持自定义成员资格用户类型和自定义成员资格数据存储区。可以编写自定义成员资格提供程序的 GetUser 和 CreateUser 方法,以返回自定义成员资格用户类型的对象。可以编写自定义成员资格提供程序的 UpdateUser 方法,以采用自定义成员资格用户类型的对象作为输入。
下面几节提供有关创建一个使用自定义成员资格用户类型的自定义成员资格提供程序的指南。示例以如何:演示成员资格提供程序实现中提供的代码为基础,并使用本主题前面为成员资格用户数据创建数据源部分提供的数据库架构。
修改 GetUser 方法
使用自定义成员资格用户类型时,成员资格提供程序的 System.Web.Security.MembershipProvider.GetUser(System.String,System.Boolean) 和 System.Web.Security.MembershipProvider.GetUser(System.Object,System.Boolean) 方法必须仍然返回 MembershipUser 类型的对象。只要自定义成员资格用户类继承 MembershipUser 类,就会返回自定义成员资格用户类型的对象作为实现 GetUser 方法的返回值。然后应用程序代码可以强制转换返回的 MembershipUser 作为自定义成员资格用户类型,以访问自定义成员资格用户的其他成员,如下面的代码示例所示。
下面的代码示例演示如何:演示成员资格提供程序实现中示例成员资格提供程序的修改后的 GetUser 方法(及其支持私有方法),这些方法已进行了更新,以便返回本主题前面创建自定义成员资格用户部分中的自定义成员资格用户类型。
Visual Basic 复制代码''
'' MembershipProvider.GetUser(String, Boolean)
''
Public Overrides Function GetUser(ByVal username As String, _