Asp.Net 核心身份,IdentityUser.Email 与用户管理<IdentityUser>。GetEmailAsync(IdentityUser user)



我正在查看 Asp.Net 核心网站项目中的脚手架身份帐户管理页面。更改电子邮件 Razor 页面中的 OnGetAsync(( 使用 UserManager.GetUserAsync(( 加载当前用户。 然后,它调用另一个方法将电子邮件地址和 IsEmailConfirm 值加载到页面模型的属性中。

load 方法使用 UserManager.GetEmailAsync(user( 而不是 user。电子邮件。为什么Microsoft编码人员会这样做?

它通过使用UserManager.IsEmailConfirmedAsync(user(而不仅仅是user对IsEmailFirmed执行相同的操作。是电子邮件确认。

我错过了什么?

public partial class Email : PageModel
{
public string Email { get; set; }
[BindProperty]
public InputModel Input { get; set; }
public bool IsEmailConfirmed { get; set; }
public async Task<IActionResult> OnGetAsync()
{
var user = await _userManager.GetUserAsync(User);
if (user == null)
{
return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
}
// user should be valid here.
await LoadAsync(user);
return Page();
}
protected async Task LoadAsync(IdentityUser user)
{
// user should be valid here.
// Why not just "string email = user.Email"?
string email = await _userManager.GetEmailAsync(user);
Email = email;
Input = new InputModel { NewEmail = email };
// Why not just do "IsEmailConfirmed = user.IsEmailConfirmed"?
IsEmailConfirmed = await _userManager.IsEmailConfirmedAsync(user);
}
public class InputModel
{
[Required]
[EmailAddress]
[Display(Name = "New email")]
public string NewEmail { get; set; }
}
}```

这必须是一个实现问题。查看 github 上的 UserManager 类,GetEmailAsync向数据库和二人组发出请求。这是不正确的,因为第一个请求已经检索了有关用户的所有内容。无论如何,您都可以自己实现。

相关内容

  • 没有找到相关文章

最新更新