当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  ASP.NET Whidbey中实现Provider(2)

 ASP.NET Whidbey中实现Provider(2)

点击次数:16 次 发布日期:2008-11-26 15:05:17 作者:源代码网
源代码网推荐      可以看出,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;}
源代码网推荐   }
源代码网推荐  }
源代码网推荐  
源代码网推荐    现在可以动手来实现我们自己的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>
源代码网推荐   <providers>
源代码网推荐    <add 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验证,试试是不是已经能够成功登陆了?
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华