ASP.NET 2.0中新增的最佳功能之一是新的成员身份服务,它提供了用于创建和管理用户帐户的易于使用的API。ASP.NET 1.x大规模引入了窗体身份验证,但仍然要求您编写相当数量的代码来执行实际操作中的窗体身份验证。成员身份服务填补了ASP.NET 1.x窗体身份验证服务的不足,并且使实现窗体身份验证变得比以前简单得多。
成员身份API通过两个新的类公开:Membership和MembershipUser。前者包含了用于创建用户、验证用户以及完成其他工作的静态方法。MembershipUser代表单个用户,它包含了用于检索和更改密码、获取上次登录日期以及完成类似工作的方法和属性。通过这两个新的类,我们可以不用写一行代码,方便得完成对用户的管理。
首先要解了解Membership类,这一类的方法有:
• CreateUser — 使您能够创建新用户。
• DeleteUser — 使您能够删除现有用户。
• FindUsersByEmail — 使您能够检索与某个特定的电子邮件地址匹配的用户集合。
• FindUsersByName — 使您能够检索与某个特定的用户名匹配的用户集合。
• GeneratePassword — 使您能够生成随机密码。
• GetAllUsers — 使您能够检索成员身份提供程序中存储的所有用户。
• GetNumberOfUsersOnline — 使您能够返回当前正在访问 Web 应用程序的用户数。
• GetUser — 使您能够检索与当前用户相关联的成员身份信息,或者使您能够检索与某个已经提供用户名的用户相关联的成员身份信息。
• GetUsernameByEmail — 使您能够检索具有某个特定电子邮件地址的用户的用户名。
• UpdateUser — 使您能够更新特定用户的信息。
• ValidateUser — 使您能够根据成员身份提供程序对用户进行身份验证。
有几个 Membership 方法(如 GetAllUsers 和 FindUsersByName)返回 MembershipUser 对象的集合。MembershipUser 类表示有关特定用户的信息。该类具有下列属性:
• Comment — 表示与该用户相关联的任意备注。
• CreationDate — 表示该用户的创建日期。
• Email — 表示该用户的电子邮件地址。
• IsApproved — 表示该用户是否已经被批准。
• IsOnline — 表示该用户当前是否正在访问 Web 应用程序。
• LastActivityDate — 表示该用户上次访问 Web 应用程序的日期。
• LastLoginDate — 表示上次对该用户进行身份验证的日期。
• LastPasswordChangedDate — 表示上次更改用户密码的日期。
• PasswordQuestion — 表示与密码问题和回答配合使用的密码问题。
• Provider — 表示成员身份提供程序。
• Username — 表示用户名。
MembershipUser 类还包含下列方法:
• ChangePassword — 使您能够更改用户的密码。
• ChangePasswordQuestionAndAnswer — 使您能够更改密码问题和回答。
• GetPassword — 使您能够检索用户的密码。
• ResetPassword — 使您能够重置用户的密码。
当然,.NET2.0的成员管理机制不止包含这两个类,还有MembershipProvider类,MembershipProviderCollection类,MembershipUserCollection类等等。
现在已经知道Membership类都可以做什么,我们要做的就是一步一步的把Membership类的功能使用。Membership类的核心就是是帐号,我们不用再象.NET1.X那样使用Session,Cookie, 不用写那么冗长的代码来登陆,来保持状态,来管理账户。。。。
需要说明的是,仅仅靠Membership类还不能满足权限系统的需要。那么就需要Profile用户设置文件。Profile可以存储更多的用户信息,这些信息需要需要和用户的账户来对应,Profile可以存储Membership类在创建帐号时无法存储的信息。
现在,我们就来设置Membership类。我们必须要先设置数据库的连接。因为.NET2.0默认情况下使用的是SQL Server 2005 Express。版数据库个体。但是大部分情况下我们都不会使用这个数据库,我们更多的是使用SQL Server 2000或者SQL Server 2005,那么我们就要先注册我们使用的数据库。只有把数据库注册,Membership才能发挥它的作用。
%systemroot%\Microsoft.NET\Framework\v2.x\ 路径下有一个工具-aspnet_regsql,这就是注册SQL Server数据库的工具。
注册以后还不能在程序里使用Membership类,还要在web.config继续设置数据库连接字符串。
做好这步就可以为Membership提供了连接数据库的依据。
继续添加Membership节点。
1
2
3
4 applicationName="/"
5 description=""
6 minRequiredPasswordLength="6"
7 minRequiredNonalphanumericCharacters="0"
8 requiresUniqueEmail="false"
9 enablePasswordRetrieval="false"
10 enablePasswordReset="false"
11 requiresQuestionAndAnswer="false"
12 passwordFormat="Hashed"
13 name="AspNetSqlProvider"
14 type="System.Web.Security.SqlMembershipProvider"/>
15
16
defaultProvider : 默认数据提供程序
connectionStringName : 数据库连接字符串节点的key
applicationName : 使用该membership的程序名称
description : 描述信息
minRequiredPasswordLength : 密码最少 多少位
minRequiredNonalphanumericCharacters : 必须包含多少个特殊字符
requiresUniqueEmail : 注册时是否需要email唯一.
enablePasswordRetrieval : 允许找回密码否
enablePasswordReset : 允许修改密码否
requiresQuestionAndAnswer : 注册时是否必须填写密码我问题和答案
passwordFormat : 密码加密方式
name : 名称
type : 类的命名空间
注意这个配置节,他不但可以突破我们一直认为不符合中国国情的用户注册方式(7位以上,必须带一个特殊字符)
.同时我们可以指定数据提供程序.这里我们是指定到SQL Server的.
到这里就已经把铺垫工作都完成了,现在,就需要测试一下,在VS2005里,点【网站】菜单,选择【ASP.NET配置】选项。
点【提供程序】选项卡,测试Provider连接。
测试成功的话就说明一切已经OK,可以进行程序编写了。