asp.net-mvc-3 - 无法验证用户时如何返回更详细的错误

标签 asp.net-mvc-3 asp.net-membership membership-provider

我正在为我的 asp.net 项目创建自定义成员资格类。在MembershipProvider类中,用户验证函数定义如下。

public abstract bool ValidateUser(string username, string password);

问题是验证可能因多种原因而失败,因此我想提供更详细的说明来说明登录失败的原因(例如,用户被锁定等),但这不能通过 bool 返回类型来完成。我当然可以创建我的验证方法之一,如下所示

public RichStatusDetailsEnum ValidateUser(string username, string password);

上面的问题是我将无法以通用方式调用此方法(仅通过 Membership.ValidateUser)。相反,我将不得不实例化我的自定义成员资格提供程序等的对象。其他人是否遇到过同样的问题,是否有更好的方法来处理此类情况?

最佳答案

根据 this MSDN resource ,返回会告诉你它是否有效。只有两个参数(用户名和密码)。如果返回的是 false,那么您就知道其中一个已关闭。您始终可以通过调用 Membership.GetUser() 来测试 UserName 是否正确。 .如果返回的 MembershipUser 对象不为空,则您知道 UserName 是正确的。在这种情况下,这会让您相信如果 ValidateUser() 失败,那就是密码错误。

查看用户是否被锁定:对于从 GetUser() 返回的 MembershipUser 对象,您可以测试用户被属性 Membershipuser.IsLockedOut 锁定。

关于asp.net-mvc-3 - 无法验证用户时如何返回更详细的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8824249/

相关文章:

asp.net-mvc-3 - controller 'TestController' 单个实例不能用于处理多个请求

c# - 在C#中将基类转换为子类

asp.net-mvc - ASP.NET MVC 成员(member)服务电子邮件

c# - 无法从程序集 '...' 加载类型 'System.Web, ...'

asp.net-mvc-3 - MVC3 jquery ajax 参数数据在 Controller 处为空

c# - 在 .NET MVC 中使用 LDAP/网络凭据验证用户

asp.net - 单声道与 SQL Server 成员资格提供程序?

asp.net-mvc - 用户经常注销(默认成员(member)提供商)

c# - Request.IsAuthenticated 为 TRUE 但 Membership.GetUser() 为 NULL

c# - .Net 成员(member)提供者和名字和姓氏