ASP.NET Whidbey中实现Provider(2)
点击次数:16 次 发布日期:2008-11-26 15:05:17 作者:源代码网
|
源代码网推荐 源代码网推荐 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)。 源代码网推荐 源代码网供稿. |
