ASP.Net MembershipProvider:自动生成不含非字母数字字符的密码
使用 ASP.Net MembershipProvider 自动生成不包含非字母数字字符的密码
引言
在一个使用 Asp.Net MembershipProvider 的应用程序中,如果在成员资格流程中,你不想在发送到给定电子邮件地址的生成的密码中使用除字母以外的字符,则需要按照以下步骤操作。
不幸的是,这似乎很复杂,而且我认为 MembershipProvider 的设计存在缺陷。
使用代码
这需要对 CreateUserWizard 控件进行一些更改
为此,创建一个从 CreateUserWizard 控件派生的新 Web 控件,并重写 Password 属性。
ToolboxData("<{0}:MyCreateUserWizard runat="server"></{0}:MyCreateUserWizard>")]
public class MyCreateUserWizard : CreateUserWizard
{
public MyCreateUserWizard()
: base()
{
}
private string generatedPassword = string.Empty;
public override string Password
{
get
{
if (string.IsNullOrEmpty(generatedPassword))
generatedPassword = GeneratePassword();
return generatedPassword;
}
}
}
如果你希望 PasswordRecovery 控件具有相同的功能,则需要创建一个从 System.Web.Security.SqlMembershipProvider 派生的新类,并重写 GeneratePassword 方法。
public class MyMembershipProvider : System.Web.Security.SqlMembershipProvider
{
public MyMembershipProvider()
: base()
{
}
public override string GeneratePassword()
{
....
}
}