在我正在处理的应用程序中,创建的用户在激活帐户之前不会获得批准。该IsApproved
标志设置为假,直到它们被激活。
当他们提交激活时,我们希望在激活用户之前检查他们的密码是否有效,但Membership.ValidateUser(..)
如果用户未获得批准,将始终返回 false,因此似乎无法区分密码错误和未批准用户。
如何检查密码以验证未获批准的用户?
到目前为止我看过的可能的解决方案:
- 自定义会员提供程序:这是很多工作并且破坏了在 .NET 中使用会员系统的全部意义,这是基本功能,必须有一种检查密码的方法。
- 简单地设置 IsApproved 标志并将其更改回来:这是非常不安全的。
- 用于
ChangePassword
更改为随机密码然后再返回,检查它是否成功:这是一个讨厌的黑客,我真的不想这样做。 - 出于某种原因,在 : 方法上调用私有
CheckPassword
函数SqlMembershipProvider
是私有的,我不想这样做。
还有其他方法吗?当然,这是任何具有激活等功能的全功能用户帐户系统都需要的标准功能。系统是否有比我正在做的更好的设计?我是否以错误的方式使用 IsApproved?
谢谢您的帮助。
编辑:这似乎引起了一些混乱。我创建了一个用户帐户,它有一个满足复杂性要求的密码等。我想要做的是,当用户提交包含用户名和密码的表单时,检查他们提供的密码是否与密码匹配帐户。我只想知道他们是否提供了正确的密码。根据我对框架的调查,如果不检查他们的帐户是否处于活动状态,这似乎是不可能的。