广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    ASP.NET Whidbey中实现Provider

    2018-04-08 09:03:41 次阅读 稿源:互联网
    广告

      “Whidbey”是微软工具套件的下一个版本。按照微软的计划,它将会在2004年底推出。

      Asp.Net 2.0(codename Whidbey)通过Provider模式为用户验证、角色管理等方面提供了非常强大易用的框架模型。Whidbey中提供了一个Asp.Net configuration工具,通过它可以非常容易地配置用户信息数据库,管理角色等等,再与新加入的Security控件配合,几乎不用写什么代码就能够实现用户验证和角色管理功能。关于这些控件和配置工具的具体使用,可以参考这篇文章:使用更精简的代码保证 ASP.NET 应用程序的安全

      但是在PDC Preview版本的Whidbey中,这个配置工具的功能还不是很完善。从我使用的情况来看,它目前还只能创建和连接自己的Demo用的Access数据库,不能连接SQL Server数据库进行扩展。因此,为了能够连接SQL Server,我们必须提供我们自己的Providers。这里以连接IBuySpy的Portal数据库为例来说明如何实现一个Membership Provider。

      为了搞清楚如何实现我们自己的Membership Provider,有必要先看看Whidbey默认使用的Membership Provider是如何做的。在machine.config配置文件中,Whidbey使用类似下面这样的配置实现:

      

    <membership defaultProvider="AspNetAccessProvider" userIsOnlineTimeWindow="15" ><providers><add name="AspNetSqlProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=1.2.3400.0,  Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer"enablePasswordRetrieval="false"enablePasswordReset="true"requiresQuestionAndAnswer="false"applicationName="/"requiresUniqueEmail="false"passwordFormat="Hashed"description="Stores and retrieves membership data from the local Microsoft SQL Server database"/><add name="AspNetAccessProvider"type="System.Web.Security.AccessMembershipProvider, System.Web, Version=1.2.3400.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"connectionStringName="AccessFileName"enablePasswordRetrieval="false"enablePasswordReset="true"requiresQuestionAndAnswer="false"applicationName="/"requiresUniqueEmail="false"passwordFormat="Hashed"description="Stores and retrieves membership data from the local Microsoft Access database file"/></providers></membership> 

      关于这段配置文件的更详细解说,可以参考《A First Look at ASP.NET v. 2.0》。

      可以看出,Whidbey默认使用SqlMembershipProvider或者AccessMembershipProvider来进行用户验证和管理。这两个Provider实现了IProvider和IMembershipProvider接口,实际上这两个接口也是每个MembershipProvider所必需的,其中IProvider负责Provider的初始化,而IMembershipProvider则实现MembershipProvider的主要功能。它们的定义如下:

      

    namespace System.Configuration.Provider{ public interface IProvider {  public string Name { get; }  public void Initialize(string name,  System.Collections.Specialized.NameValueCollection config); }}namespace System.Web.Security{ public interface IMembershipProvider {  public bool ChangePassword(string name, string oldPwd, string newPwd);  public bool ChangePasswordQuestionAndAnswer(string name, string password,string newPwdQuestion, string newPwdAnswer);  public System.Web.Security.MembershipUser CreateUser(string username, string password, string email,out System.Web.Security.MembershipCreateStatus status);  public bool DeleteUser(string name);  public System.Web.Security.MembershipUserCollection GetAllUsers();  public int GetNumberOfUsersOnline();  public string GetPassword(string name, string answer);  public System.Web.Security.MembershipUser GetUser(string name,bool userIsOnline);  public string GetUserNameByEmail(string email);  public string ResetPassword(string name, string answer);  public void UpdateUser(System.Web.Security.MembershipUser user);  public bool ValidateUser(string name, string password);  public string ApplicationName {get; set;}  public bool EnablePasswordReset { get;}  public bool EnablePasswordRetrieval { get;}  public bool RequiresQuestionAndAnswer { get;} }} 

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告