我正在为我的 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/