【问题标题】:How to Override createUser() ASP .NET Membership method to display custom error message?如何覆盖 createUser() ASP .NET Membership 方法以显示自定义错误消息?
【发布时间】: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


【解决方案1】:

如果您使用的是 asp:CreateUserWizard 控件,我猜您是(它会从您的 web.config 连接到会员提供程序),那么:

在设计模式下,如果您单击此控件,右上角会出现一个图标,类似于箭头,您可以在其中选择“自定义创建用户步骤”选项。这将转换控件,将其扩展为单独的控件,供内部使用。现在您可以访问错误消息(文字控件)并将其更改为显示静态消息,或显示来自代码的动态更改消息。

您还可以向 CreateUserWizard 添加事件,例如 CreatingUser、CreateUserError 和 CreatedUser,这将让您自定义行为以及更多使用创建的方式。

【讨论】:

    【解决方案2】:

    这是关于自定义 MembershipUser 的一个很好的示例:

    Sample Membership Provider Implementation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      相关资源
      最近更新 更多