在PasswordRecovery控件中更改锁定用户的错误消息

时间:2011-10-20 12:39:28

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

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

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

我想改变这条消息,但没办法。属性XXXFailureText特别是GeneralFailureText包含字符串。似乎有一个隐藏的文本用于这种特殊的错误我不能使用属性更改。

3 个答案:

答案 0 :(得分:8)

这让我很头疼,直到我试了这个。我向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);
    }
}

答案 1 :(得分:2)

您使用的是自定义会员提供商吗?部分实现的成员资格提供程序可能导致此错误。

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

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

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

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

或在PasswordRecovery

中设置'from'
<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和其他*错误事件。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.passwordrecovery_events.aspx

答案 2 :(得分:0)

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

PasswordRecoveryProperties