ASP.NET Whidbey中实现Provider(2)
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验证,试试是不是已经能够成功登陆了?
下一篇:DataGrid控件使用技巧(1) >>
相关文章:
- · 为ASP.NET控件添加设计时支持(7)
- · 为ASP.NET控件添加设计时支持(8)
- · 为ASP.NET控件添加设计时支持(10)
- · 为ASP.NET控件添加设计时支持(11)
- · 为ASP.NET控件添加设计时支持(13)
- · 利用ASP.NET访问共享网络资源(1)
- · 利用ASP.NET访问共享网络资源(2)
- · 利用ASP.NET访问共享网络资源(4)
- · 创建ASP.NET数据存储层(1)
- · 创建ASP.NET数据存储层(3)
- · 创建ASP.NET数据存储层(2)
- · 创建ASP.NET数据存储层(5)
- · 创建ASP.NET数据存储层(7)
- · ASP.NET Datagrid创建自定义列(1)
- · ASP.NET Datagrid创建自定义列(2)
- · 打造通用ASP.NET数据分页控件(1)
- · 打造通用ASP.NET数据分页控件(2)
- · 打造通用ASP.NET数据分页控件(3)
- · 打造通用ASP.NET数据分页控件(4)
- · 打造通用ASP.NET数据分页控件(5)
- · ASP.NET设计控件净化网站语言(1)
- · ASP.NET设计控件净化网站语言(2)
- · ASP.NET应用中缓存Oracle数据(1)
- · 用好ASP.NET 2.0的URL映射
- · ASP.NET中设计带事件定制控件(3)
- · ASP.NET中设计带事件定制控件(4)
- · ASP.NET中设计带事件定制控件(1)
- · ASP.NET中设计带事件定制控件(2)
- · 在ASP.NET中实现会话状态基础(1)
- · 在ASP.NET中实现会话状态基础(2)
- · 在ASP.NET中实现会话状态基础(3)
- · 在ASP.NET中实现会话状态基础(4)
- · Asp.net入门之吸星大法
- · 在ASP.NET 2.0中实现本地化(1)
- · 在ASP.NET 2.0中实现本地化(2)
- · WebMatrix开发ASP.NET试用手记(1)
- · WebMatrix开发ASP.NET试用手记(2)
- · WebMatrix开发ASP.NET试用手记(3)
