bstract bool ValidateUser (string username,
string password);
public abstract bool UnlockUser (string userName);
public abstract MembershipUser GetUser (object providerUserKey,
bool userIsOnline);
public abstract MembershipUser GetUser (string username,
bool userIsOnline);
public abstract string GetUserNameByEmail (string email);
public abstract bool DeleteUser (string username,
bool deleteAllRelatedData);
public abstract MembershipUserCollection GetAllUsers
(int pageIndex, int pageSize, out int totalRecords);
public abstract int GetNumberOfUsersOnline ();
public abstract MembershipUserCollection FindUsersByName
(string usernameToMatch, int pageIndex, int pageSize,
out int totalRecords);
public abstract MembershipUserCollection FindUsersByEmail
(string emailToMatch, int pageIndex, int pageSize,
out int totalRecords);
// Virtual methods
protected virtual byte EncryptPassword (byte password);
protected virtual byte DecryptPassword (byte encodedPassword);
protected virtual void OnValidatingPassword
(ValidatePasswordEventArgs e);
// Events
public event MembershipValidatePasswordEventHandler
ValidatingPassword;
}
SqlMembershipProvider类就是从这个类里继承下来的。
接下来 我们使用SqlMembershipProvider类作为例子来进行比较细致的说明。
SqlMembershipProvider:
SqlMembershipProvider是给Membership使用sql server数据库做的Provider,它使用数据库的存储过程来实现对数据的操作,这样SqlMembershipProvider可以经过很少的改动来 实现对其他数据库的支持。
1.Provider 初始化
Provider初始化是在 SqlMembershipProvider.Initialize,它只运行一次,是在asp.net装载Provider时。
a.初始化SqlMembershipProvider的各种属性 比如:EnablePasswordRetrieval 和 EnablePasswordReset,从相应的配置文件的配置属性中读入。
b.对一些公共属性的值进行检查,当有错误的时候抛出异常,比如PasswordFormat值是”hashed”,而EnablePasswordRetrieval的值是true,就会有异常抛出。
c.在配置里存在一些不被承认的属性时,也会抛出异常
SqlMembershipProvider.Initialize还会从<connectionStrings>中读取数据库连接字符串,保存到一个私有的变量中,如果不能读到或者读取的连接字符串是错误的,也会抛出一个异常。
2.数据定义
SqlMembershipProvider的Membership数据保存在数据库的aspnet_Membership表中
aspnet_Memb