• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • ASP.NET Whidbey中實現Provider(2)

    發表于:2007-06-30來源:作者:點擊數: 標簽:
    可以看出,Whidbey默認使用SqlMembershipProvider或者AccessMembershipProvider來進行用戶驗證和管理。這兩個Provider實現了IProvider和IMembershipProvider接口,實際上這兩個接口也是每個MembershipProvider所必需的,其中IProvider負責Provider的初始化,
         可以看出,Whidbey默認使用SqlMembershipProvider或者Aclearcase/" target="_blank" >ccessMembershipProvider來進行用戶驗證和管理。這兩個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;}
       }
      }
      
        現在可以動手來實現我們自己的MembershipProvider了:
      
      public class MyMembershipProvider : IProvider, IMembershipProvider
      {
       ……
      }
      
        驗證功能是必需的:
      
      public bool ValidateUser (string name, string password)
      {
       string connectStr = ConfigurationSettings.ConnectionStrings["PortalData"];
       SqlConnection myConnection = new SqlConnection (connectStr);
       SqlCommand myCommand = new SqlCommand ("UserLogin", myConnection);
       myCommand.CommandType = CommandType.StoredProcedure;
      
       // Add Parameters to SPROC
       SqlParameter parameterEmail = new SqlParameter ("@Email", SqlDbType.NVarChar, 100);
       parameterEmail.Value = name;
       myCommand.Parameters.Add (parameterEmail);
      
       SqlParameter parametERPassword = new SqlParameter ("@Password", SqlDbType.NVarChar, 20);
       parameterPassword.Value = password;
       myCommand.Parameters.Add (parameterPassword);
      
       SqlParameter parameterUserName = new SqlParameter ("@UserName", SqlDbType.NVarChar, 100);
       parameterUserName.Direction = ParameterDirection.Output;
       myCommand.Parameters.Add (parameterUserName);  
      
       // Open the database connection and execute the command
       myConnection.Open ();
       myCommand.ExecuteNonQuery ();
       myConnection.Close ();
       if ((parameterUserName.Value != null) && (parameterUserName.Value != System.DBNull.Value))
        return true;
        return false;
      }
      
      
      
        現在在web.config中可以這樣配置connectionString了:
      
      <connectionStrings>
      
      <add name="BugDepotData" connectionString="Data Source=(local);Trusted_Connection=true;Database=Portal" />
      
      </connectionStrings>
      
        這樣,我們自己的一個簡單的MembershipProvider就基本上完成了。接下來需要配置web.config,讓需要Provider服務的控件能夠認識它:
      
      <membership>
      ?。紁roviders>
       ?。糰dd name="MyMembershipProvider" type="MyMembershipProvider" appName="/" />
      ?。?providers>
      </membership>
      
        這段設置是參考machine.config而來的,其中type屬性的值是這樣的字符串:
      
      type="ProviderType, Assembly, Version, Culture, PublicKeyToken"
      
        由于我們的MyMembershipProvider放在/Code目錄下,并不是在單獨的Assembly中,因此只需要指出ProviderType就行了。
      
        這樣,一個具有驗證功能的Provider就完成了,現在可以在頁面上放一個新的Security控件,比如Login控件,并指定它的MembershipProperty為MyMembershipProvider(或者也可以設置membership的defaultProvider屬性為MyMembershipProvider),打開Forms驗證,試試是不是已經能夠成功登陸了?
      
      

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>