MembershipUser.ResetPassword() 方法的逻辑是什么
What is the logic is MembershipUser.ResetPassword() method
通常,ResetPassword(string passwordAnswer)
return 是会员用户的新密码。 ChangePassword(string oldPassword,string newPassword)
接受两个参数:旧密码和新密码。我同意,但在下面的代码中:
string pwd = mu.ResetPassword(k.SecretAnswer);
mu.ChangePassword(pwd, k.password);
return RedirectToAction("Login");
根据此代码,pwd
包含旧密码,但 ResetPassword()
方法 return 包含新的随机密码。那么pwd
怎么能代表旧密码呢? ResetPassword()
方法 return 不应该是一个新密码吗?我错过了什么?这背后的逻辑是什么?
重置密码创建了一个必须在首次使用时重置的密码。它更多地用作令牌(在 auth 领域)而不是实际密码。
因此,当您调用 mu.ChangePassword(pwd, k.password);
时,您将 pwd
令牌“交换”为“正常”密码。
如果您在上面的行中跳过更改密码并尝试使用 Reset
方法中的 pwd
登录,则不会成功。
UI 会强制 您更改密码,然后使用新 密码 登录.
这样设计的目的是让用户是唯一能够以纯文本形式(即未加密)看到其密码的用户。
编辑:究竟什么是令牌,令牌和密码有什么区别?
简答:
- 一个密码可以使用多次次,而token只能使用一次.
- 密码验证,令牌兑换.
- 密码需要每次使用验证。 令牌需要验证才能获得。
虽然令牌和密码都用于获得访问权限,但区别在于它们的使用方式。
让我们尝试一些 real-world 示例(假设这些示例不能 100% 符合我们的用例,但我相信它们可以提供帮助)。
您的 ATM 卡的 PIN 是 密码,因为:
- 这是秘密
- 每次使用都会验证
- 你可以反复使用它
如果您将西装带到干洗店,他们会给您一张票(带有编号),您可以用它来取回西装。那是一个 代币 因为:
- 您必须实际持有门票才能取回您的西装
- 如果你有票,你就会得到西装。无话可问。当你把它放下时,你证明了这是你的衣服。
- 一经使用,门票一文不值
通常,ResetPassword(string passwordAnswer)
return 是会员用户的新密码。 ChangePassword(string oldPassword,string newPassword)
接受两个参数:旧密码和新密码。我同意,但在下面的代码中:
string pwd = mu.ResetPassword(k.SecretAnswer);
mu.ChangePassword(pwd, k.password);
return RedirectToAction("Login");
根据此代码,pwd
包含旧密码,但 ResetPassword()
方法 return 包含新的随机密码。那么pwd
怎么能代表旧密码呢? ResetPassword()
方法 return 不应该是一个新密码吗?我错过了什么?这背后的逻辑是什么?
重置密码创建了一个必须在首次使用时重置的密码。它更多地用作令牌(在 auth 领域)而不是实际密码。
因此,当您调用 mu.ChangePassword(pwd, k.password);
时,您将 pwd
令牌“交换”为“正常”密码。
如果您在上面的行中跳过更改密码并尝试使用 Reset
方法中的 pwd
登录,则不会成功。
UI 会强制 您更改密码,然后使用新 密码 登录.
这样设计的目的是让用户是唯一能够以纯文本形式(即未加密)看到其密码的用户。
编辑:究竟什么是令牌,令牌和密码有什么区别?
简答:
- 一个密码可以使用多次次,而token只能使用一次.
- 密码验证,令牌兑换.
- 密码需要每次使用验证。 令牌需要验证才能获得。
虽然令牌和密码都用于获得访问权限,但区别在于它们的使用方式。
让我们尝试一些 real-world 示例(假设这些示例不能 100% 符合我们的用例,但我相信它们可以提供帮助)。
您的 ATM 卡的 PIN 是 密码,因为:
- 这是秘密
- 每次使用都会验证
- 你可以反复使用它
如果您将西装带到干洗店,他们会给您一张票(带有编号),您可以用它来取回西装。那是一个 代币 因为:
- 您必须实际持有门票才能取回您的西装
- 如果你有票,你就会得到西装。无话可问。当你把它放下时,你证明了这是你的衣服。
- 一经使用,门票一文不值