Asp.Net 核心身份,IdentityUser.Email 与 UserManage<IdentityUser>.GetEmailAsync(IdentityUser 用户)
Asp.Net Core Identity, IdentityUser.Email versus UserManage<IdentityUser>.GetEmailAsync(IdentityUser user)
我正在审查 Asp.Net 核心网站项目中的脚手架身份帐户管理页面。更改电子邮件 Razor 页面中的 OnGetAsync() 使用 UserManager.GetUserAsync() 加载当前用户。
然后调用另一个方法将电子邮件地址和 IsEmailConfirmed 值加载到页面模型的属性中。
加载方法使用 UserManager.GetEmailAsync(user) 而不仅仅是 user.Email。为什么 Microsoft 编码人员会这样做?
它通过使用 UserManager.IsEmailConfirmedAsync(user) 而不是仅 user.IsEmailConfirmed.
为 IsEmailConfirmed 做同样的事情
我错过了什么?
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 class,GetEmailAsync
向数据库和 duo 发出请求。这是不合适的,因为第一个请求已经检索了有关用户的所有信息。反正你可以自己实现。
我正在审查 Asp.Net 核心网站项目中的脚手架身份帐户管理页面。更改电子邮件 Razor 页面中的 OnGetAsync() 使用 UserManager.GetUserAsync() 加载当前用户。 然后调用另一个方法将电子邮件地址和 IsEmailConfirmed 值加载到页面模型的属性中。
加载方法使用 UserManager.GetEmailAsync(user) 而不仅仅是 user.Email。为什么 Microsoft 编码人员会这样做?
它通过使用 UserManager.IsEmailConfirmedAsync(user) 而不是仅 user.IsEmailConfirmed.
为 IsEmailConfirmed 做同样的事情我错过了什么?
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 class,GetEmailAsync
向数据库和 duo 发出请求。这是不合适的,因为第一个请求已经检索了有关用户的所有信息。反正你可以自己实现。