【发布时间】:2017-02-12 22:52:58
【问题描述】:
这是我的情况。
我使用的是 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'
我很想设置一条自定义错误消息,向用户真正解释我们在用于验证密码的正则表达式中的所有要求。
到目前为止,我能想到的唯一方法是实现/扩展我们正在使用的当前提供程序,以便在验证出现问题时设置自定义错误消息,但我想可能还有另一种更好/更简单的方法这样做。
提前致谢!
【问题讨论】:
-
自定义可能是最好的方法,除了覆盖 ValidateUser() 之外,您可能不需要做太多事情。如果无效,则只需管理您的自定义消息。初学者试试这个:stackoverflow.com/a/12094556/2779990
标签: asp.net .net security asp.net-membership episerver