MembershipProvider和RequiresQuestionAndAnswer
||
我们提供一个网站模板供客户用作其网站的基础。我们的网站有一个自定义的成员资格提供程序。
我们遇到了一个客户提出的问题。客户通过带有URL的URL的电子邮件向潜在成员发送邀请以登录该成员。在注册过程中,他们设置了安全问题/答案。
但是,有时准会员会丢失电子邮件(并因此丢失密码),但仍会尝试加入该站点。
客户要求允许会员在注册未完成时重设密码,而无需通常的安全性问题/答案。
不幸的是,MembershipProvider在询问是否需要问题/答案时未提供用户名。但是它确实会在之前调用GetUser()。
为了使此功能正常工作,我在MembershipProvider中添加了一种方法(StartingPasswordRecovery),以标记该密码重置处于活动状态,并从PasswordRecovery页面的OnVerifyingUser事件中调用它。
尽管此代码有效,但我不认为它非常强大。
谁能指出我的解决方案。
这是我添加到会员资格提供者中的相关代码。
Private _hasUserDefinedQuestionAndAnswer As Boolean
Private _isResettingPassword As Boolean
Public Overloads Overrides Function GetUser(ByVal username As String, ByVal userIsOnline As Boolean) As System.Web.Security.MembershipUser
...
_hasUserDefinedQuestionAndAnswer = ...
...
End Function
Public Overrides ReadOnly Property RequiresQuestionAndAnswer() As Boolean
Get
If Me._isResettingPassword Then
Me._isResettingPassword = False
Return Me.pRequiresQuestionAndAnswer And Me._hasUserDefinedQuestionAndAnswer
End If
Return Me.pRequiresQuestionAndAnswer
End Get
End Property
Public Sub StartingPasswordRecovery()
Me._isResettingPassword = True
End Sub
没有找到相关结果
已邀请:
1 个回复
泻伴墓荒
自定义成员资格提供者:
您可以在用户管理页面中为每个用户分别设置它:
编辑: 根据您的评论,我对代码做了一些修改。我希望这有助于使其工作: 在自定义成员资格提供者中:
您的PasswordRecovery-Control在哪里: