2

在我正在处理的应用程序中,创建的用户在激活帐户之前不会获得批准。该IsApproved标志设置为假,直到它们被激活。

当他们提交激活时,我们希望在激活用户之前检查他们的密码是否有效,但Membership.ValidateUser(..)如果用户未获得批准,将始终返回 false,因此似乎无法区分密码错误和未批准用户。

如何检查密码以验证未获批准的用户?

到目前为止我看过的可能的解决方案:

  • 自定义会员提供程序:这是很多工作并且破坏了在 .NET 中使用会员系统的全部意义,这是基本功能,必须有一种检查密码的方法。
  • 简单地设置 IsApproved 标志并将其更改回来:这是非常不安全的。
  • 用于ChangePassword更改为随机密码然后再返回,检查它是否成功:这是一个讨厌的黑客,我真的不想这样做。
  • 出于某种原因,在 : 方法上调用私有CheckPassword函数SqlMembershipProvider是私有的,我不想这样做。

还有其他方法吗?当然,这是任何具有激活等功能的全功能用户帐户系统都需要的标准功能。系统是否有比我正在做的更好的设计?我是否以错误的方式使用 IsApproved?

谢谢您的帮助。

编辑:这似乎引起了一些混乱。我创建了一个用户帐户,它有一个满足复杂性要求的密码等。我想要做的是,当用户提交包含用户名和密码的表单时,检查他们提供的密码是否与密码匹配帐户。我只想知道他们是否提供了正确的密码。根据我对框架的调查,如果不检查他们的帐户是否处于活动状态,这似乎是不可能

4

1 回答 1

0

现在我明白你了。我的建议是将他们的密码临时存储在其中Membership Profile并事先匹配。匹配后,激活帐户并清除Profile. 注意:profile将存储passwordplain text. 我正在做类似的事情。

于 2013-07-05T15:04:43.173 回答