设为首页
收藏本站
最近更新

文章搜索
本类热门

首页 >> 网络编程 >> ASP.NET >> ASP.NET教程 >> 新闻正文 [字体: ] [打印文档]
ASP.NET 2.0 Membership原理及应用

文章作者:
责任编辑:rosan 录入时间:2006-9-10 21:50:29 来源:
频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意.

百特科技[http://www.PCbyte.cn]专业的空间、主机提供商,域名注册绝对优惠!
摘要:asp.net 2.0的Membership组件提供了一组非常简单易用的接口供开发者进行用户管理,用户验证。本文将它对它的实现原理进行简单的分析,介绍如何正确的使用,以及如何对它进扩展。

  一、MembershipProvider抽象类

  在很多情况下,在使用Membership的时候我们并不会直接使用到这个类。在MembershipProvider类定义的都是一些抽象方法和抽象属性,就是这些方法和属性构成了Membership接口的基本规范,而且在.NET 框架内部使用Membership的功能都是通过这个类型调用的。继承类通过实现这些接口来提供不用环境下的用户管理功能,并且对Membership框架本身并没有影响,下面来看看MembershipProvider原形定义:

public abstract class MembershipProvider : ProviderBase

...{

// Events

public event MembershipValidatePasswordEventHandler ValidatingPassword;



// Methods

protected MembershipProvider();

public abstract bool ChangePassword(string username, string oldPassword, string newPassword);

public abstract bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer);

public abstract MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status);

protected virtual byte[] DecryptPassword(byte[] encodedPassword);

public abstract bool DeleteUser(string username, bool deleteAllRelatedData);

internal string EncodePassword(string pass, int passwordFormat, string salt);

protected virtual byte[] EncryptPassword(byte[] password);

public abstract MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords);

public abstract MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords);

internal string GenerateSalt();

public abstract MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords);

public abstract int GetNumberOfUsersOnline();

public abstract string GetPassword(string username, string answer);

public abstract MembershipUser GetUser(object providerUserKey, bool userIsOnline);

public abstract MembershipUser GetUser(string username, bool userIsOnline);

internal MembershipUser GetUser(string username, bool userIsOnline, bool throwOnError);

public abstract string GetUserNameByEmail(string email);

protected virtual void OnValidatingPassword(ValidatePasswordEventArgs e);

public abstract string ResetPassword(string username, string answer);

internal string UnEncodePassword(string pass, int passwordFormat);

public abstract bool UnlockUser(string userName);

public abstract void UpdateUser(MembershipUser user);

public abstract bool ValidateUser(string username, string password);



// Properties

public abstract string ApplicationName ...{ get; set; }

public abstract bool EnablePasswordReset ...{ get; }

public abstract bool EnablePasswordRetrieval ...{ get; }

public abstract int MaxInvalidPasswordAttempts ...{ get; }

public abstract int MinRequiredNonAlphanumericCharacters ...{ get; }

public abstract int MinRequiredPasswordLength ...{ get; }

public abstract int PasswordAttemptWindow ...{ get; }

public abstract MembershipPasswordFormat PasswordFormat ...{ get; }

public abstract string PasswordStrengthRegularExpression ...{ get; }

public abstract bool RequiresQuestionAndAnswer ...{ get; }

public abstract bool RequiresUniqueEmail ...{ get; }



// Fields

private MembershipValidatePasswordEventHandler _EventHandler;

private const int SALT_SIZE_IN_BYTES = 0x10;

}


  其中修饰符为internal是几个方法是密码的辅助方法,用于加密,解密和验证密码。但这边的设计似乎有一些问题,将这些方法定义为internal范围好像有点不妥,将这些方法定义在基类中,就是为了能够被复用,但是从效果上来看,不是这样的,因为internal的成员只允许在本程序集内被使用(正常情况下,不包括反射等其它方法),这就是说我们自己扩展的MembershipProvider是无法使用到这些方法的。而且从目前应用范围来看,目前这些方法也只有在SqlMembershipProvider中被使用到,所以我认为应该将这些方法修饰符修改为protected。

此新闻共有3页 上一页 1 2 3 下一页

推荐好友 | 频道收藏 | 打印文档 | 报告错误  
相关连接
·ASP.NET入门数据篇[1]
·ASP.NET 2.0发送电子邮件中存在的问题
·ASP.NET2.0与VS2005利器大评析之优点篇
·ASP.NET2.0高级数据处理之使用参数
·Win2003完美配置Apache+IIS+Tomcat多站点
·ASP.NET底层架构探索之IE6的革新
·ASP.NET 配置文件层次结构和继承
·ASP.NET 2.0 Membership原理及应用
同一专题
·无相关专题
发表评论 版权声明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有
转载
要求转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。
共有评论查看评论
姓名: