在System.Web.Security.MembershipProvider (EPiServer)中更改密码策略验证的错误消息

5

这是我的情况。

我正在使用EPiServer 9,并已配置了一个SqlServerMembershipProvider,如下所示:

<add name="SqlServerMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                     connectionStringName="EPiServerXYZ"
                     enablePasswordRetrieval="false"
                     enablePasswordReset="true"
                     requiresQuestionAndAnswer="false"
                     requiresUniqueEmail="false"
                     maxInvalidPasswordAttempts="5"
                     minRequiredPasswordLength="8"
                     minRequiredNonalphanumericCharacters="1"
                     passwordAttemptWindow="10"
                     applicationName="/"
                     passwordStrengthRegularExpression="^.*(?=.{8,})(?=.*\d)(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^\w\d\s]).*$" />

一切都运行良好,包括验证和不同的场景。
我们的问题在于,会员提供程序显示的错误消息是使用配置创建的,结果会给出不友好的消息,例如:
-“无效密码,最小长度:8,最小非字母数字字符:1” -“'newPassword'中的非字母数字字符需要大于或等于'1'。 参数名称:newPassword” -“参数'newPassword'与配置文件中指定的正则表达式不匹配。 参数名称:newPassword”

error message password validation when creating user in episerver

我希望设置一个自定义错误消息,真正向用户解释我们在用于验证密码的正则表达式中的所有要求。
到目前为止,我能想到的唯一方法是通过实现/扩展我们当前使用的提供程序来设置自定义错误消息,以便在验证出现问题时发出提示,但我猜可能有另一种更好/更简单的方法来做到这一点。
提前感谢!

1
自定义可能是最佳途径,你可能不需要做太多其他事情,除了覆盖ValidateUser()方法。如果无效,则只需管理自定义消息。可以先尝试这个:http://stackoverflow.com/a/12094556/2779990 - Stinky Towel
1个回答

0

我同意您的自定义错误消息想法。

考虑显示一个带有UI错误消息的div,这些消息在检测到输入错误时隐藏。这可以放置在输入文本框的右侧或提交按钮上方。显示的错误消息将取决于检测到的输入错误。

对于任何密码/确认密码输入错误,请定义一个通用密码错误消息,然后按照您的问题列出密码输入要求。

还可以为用户名和电子邮件地址输入错误添加其他错误消息。


1
这个截图是 Episerver 的一个开箱即用功能,而该部分 UI 不容易自定义。:/ 因此,我认为覆盖默认错误消息的自定义实现是最简单的方法。 - Ted Nyberg
好的观点,因此为错误消息创建新的div可能对Episerver来说不可行。我希望Episerver有一种显示自定义错误消息的方法,但我并不确定是否存在这样的方法。 - JohnH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接