【发布时间】:2012-01-10 12:44:31
【问题描述】:
当密码检查失败时,如何重写 createUser() Membership 方法以显示自定义错误消息?
我使用了网站管理工具,它提供了一个类似向导的界面来创建新用户。 (要启动此工具,请单击 Microsoft Visual Studio 中网站菜单上的 ASP.NET 配置)
Web.Config 文件:
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear />
<add name="MyMembershipProvider" type="BlueDDApp.Controllers.MyMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" minRequiredPasswordLength="8" minRequiredNonalphanumericCharacters="0" passwordStrengthRegularExpression="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!%,.;:])|(?=.*[a-z])(?=.*[0-9])(?=.*[!%,.;:])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!%,.;:])$" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
自定义会员等级::
public class MyMembershipProvider : SqlMembershipProvider
{
public MyMembershipProvider()
{
//Membership.ValidatingPassword += new MembershipValidatePasswordEventHandler(OnValidatePassword);
ValidatingPassword += ValidatePassword;
}
/* public override MembershipUser CreateUser( string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
ValidatingPassword += ValidatePassword;
return base.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
}*/
void ValidatePassword(object sender, ValidatePasswordEventArgs e)
{
Regex check = new Regex("^(?i)(?!.*" + e.UserName + ").*$");
if (!check.IsMatch(e.Password))
{
e.FailureInformation = new HttpException("blah blah");
e.Cancel = true;
}
}
}
【问题讨论】:
-
我不明白为什么 网站管理工具 是相关的,因为自定义错误消息只有在您提供自定义用户管理时才有意义。
-
嗯,好吧,从没想过要高效地使用它。但是请看这里4guysfromrolla.com/articles/052307-1.aspx 和这里4guysfromrolla.com/articles/053007-1.aspx。也许您可以推出您的自定义网站管理工具。
-
好吧,蒂姆,我认为这有点道理。
-
不,蒂姆,我现在不需要它。现在我认为是使用一些自定义模型和视图来注册用户(创建)并使用会员服务来注册用户。如果您有相关的示例链接,请分享。
标签: asp.net asp.net-mvc asp.net-membership