Tim*_*riv 3 asp.net-mvc asp.net-core-mvc asp.net-core
我正在尝试为用户实现一种在AspNetCore中更改其电子邮件的方式,因此在"帐户管理"屏幕上,我具有将在用户管理器上调用GenerateChangeEmailTokenAsync的更改功能,然后发送包含令牌和UserId的链接的电子邮件.
我的问题是如何允许链接将电子邮件地址更改为新地址,因为ChangeEmailAsync需要输入新的电子邮件地址.
实现此功能的最佳实践方法是什么?我不想通过电子邮件链接发送新的电子邮件地址,但也不想让他们再次输入电子邮件.希望有人这样做了,我无法在任何地方找到它,而且应该非常简单.
我知道现在已经很晚才回答这个问题了,但我之前一直在寻找它,并且认为我把这个答案留给了其他人.
GenerateChangeEmailTokenAsync方法将新电子邮件作为令牌哈希的一部分.接下来,您将创建一个包含令牌,新电子邮件和旧电子邮件的链接
var token = await _userManager.GenerateChangeEmailTokenAsync(user, model.NewEmail);
var resetLink = Url.Action("ChangeEmailToken", "account", new {token = token, oldEmail = user.Email, newEmail = model.newEmail }, protocol: HttpContext.Request.Scheme);
Run Code Online (Sandbox Code Playgroud)
接下来,您通过电子邮件将此链接发送给用户.
单击时,用户点击链接中指定的方法(此处为AccountController上的"ChangeEmailToken":
[AllowAnonymous]
[HttpGet]
public async Task<IActionResult> ChangeEmailToken([FromQuery] string token, [FromQuery] string oldEmail, [FromQuery] string newEmail)
Run Code Online (Sandbox Code Playgroud)
接下来,您需要验证令牌,并且 - 如果成功 - 更新电子邮件地址.
var result = await _userManager.ChangeEmailAsync(user, newEmail, token);
Run Code Online (Sandbox Code Playgroud)
正常流程是让用户照常更新个人资料。
如果用户更新了他们的电子邮件地址,则需要验证新的电子邮件地址。
那就是当您使用 生成令牌时GenerateChangeEmailTokenAsync。
您将该令牌作为链接发送到新电子邮件地址。
当用户单击新电子邮件中的链接时,会将他们带回您的网站,该网站会自动确认令牌并验证新电子邮件地址。
| 归档时间: |
|
| 查看次数: |
2356 次 |
| 最近记录: |