【问题标题】:Change error message for locked out user in PasswordRecovery control在 PasswordRecovery 控件中更改锁定用户的错误消息
【发布时间】:2011-10-20 12:39:28
【问题描述】:

我将 ASP.NET PasswordRecovery 控件与标准成员资格提供程序结合使用。被锁定的用户会收到令人困惑的错误消息

我们无法访问您的信息。请再试一次。

我想更改此消息,但没有办法。属性 XXXFailureText 尤其是 GeneralFailureText 包含多个字符串。似乎有一个隐藏文本用于这种特殊类型的错误,我无法使用属性进行更改。

【问题讨论】:

  • 任何代码示例??你的asp代码和控件的属性??
  • 你不想要它们。相信我。子类 PasswordControl,动态创建,从 SqlMembershipProvider 派生的自定义成员资格提供程序,没有标记代码。一切正常。只是一条我无法更改的错误消息,因为控件没有正确的属性来更改锁定用户的错误消息。
  • 好吧,解决看似简单但简单的解决方案无法解决的问题有点困难......这意味着简单的问题是不够的
  • 我试图改写结尾。现在可能更清楚了。

标签: asp.net asp.net-membership password-recovery


【解决方案1】:

这也让我很头疼,直到我尝试了这个。我在 VerifyingUser 事件中添加了代码来设置 UserNameFaileurText 如果用户被锁定并且效果很好,那就是错误消息正是我想要的。

 protected void PasswordRecovery1_VerifyingUser(object sender, LoginCancelEventArgs e)
{
    MembershipUser membershipUser = Membership.GetUser(PasswordRecovery1.UserName);
    if (membershipUser != null && membershipUser.IsLockedOut)
    {
        PasswordRecovery1.UserNameFailureText = string.Format("<span style='font-            size:larger'>Your account has been locked. Please contact<br/>your <a href='mailto:webmanager@aaa.co.uk?subject=Locked Account - {0}'>system administrator</a>.</span>", PasswordRecovery1.UserName);
    }
}

【讨论】:

    【解决方案2】:

    您是否使用自定义会员服务提供商?此错误可能是由部分实现的成员资格提供程序引起的。

    您还需要检查您的 web.config 设置。确保设置了这样的内容:

    enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false"
    

    除了检查他们您的 mailsettings/smtp 部分是否使用“发件人”电子邮件地址正确设置。

    <mailSettings>
      <smtp from="noreply@mysite.com">
        <network host="mysite.smtp.server" port="25"/>
      </smtp>
    </mailSettings>
    

    或在PasswordRecovery中设置“发件人”

    <asp:PasswordRecovery runat="server">
        <MailDefinition From="passwordrecovery@mysite.com">
        </MailDefinition>
    </asp:PasswordRecovery>
    

    顺便说一句,您指定的错误消息是默认的UserNameFailureTexthttp://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.passwordrecovery.usernamefailuretext.aspx

    如果一切都失败了,您可以劫持事件并取消它们,然后显示您自己的错误消息。特别是 UserLookupError 和其他 *Error 事件。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.passwordrecovery_events.aspx

    【讨论】:

    • 感谢您的回答,但是...该错误是由锁定的用户引起的,并且出现错误不是我的问题。这是正确的行为。我无法修改的错误消息是我的问题 - 很抱歉,但它不是 UserNameFailureText 的默认值。处理 UserLookupError 是解决方法的最后一个选项,但它是在密码恢复之前触发的。如果我使用它,我必须实现部分 PasswordRecovery 逻辑来更改错误消息。
    • 至少可以解决通常的嫌疑人。我想不出任何其他可以按照你想要的方式覆盖它的设置。这可能是会员工作的预期方式。即无法为锁定的用户尝试用户身份验证。我认为最好的方法是插入“验证用户”事件并检查空调是否被锁定。然后显示您需要显示的任何错误消息。
    【解决方案3】:

    在控件的属性窗口中有一个显示文本的字段,您可以更改该字段

    【讨论】:

    • 我尝试了三个 FailureText 属性,但没有结果。你是指他们还是其他什么?
    • @dirk 你重建解决方案了吗???另外,您是否有一个开发和生产代码,您可能只更改开发代码而不是在您的实时站点上??
    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 2020-12-01
    • 2021-04-25
    • 1970-01-01
    • 2021-03-12
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多