如何在 ASP.Net Core 中为唯一电子邮件地址添加 IdentityUser IdentityResult 错误
How to add a IdentityUser IdentityResult error in ASP.Net Core for a unique email address
我的 "User" class 继承自 "IdentityUser",我想让 EmailAddress 唯一。但不是像这样创建一个独特的 属性
builder.Entity<User>()
.HasIndex(u => u.Email).IsUnique();
在模型构建器中,当我尝试在下面的方法中注册一个重复的电子邮件地址时抛出异常,我希望它 return 一个 IdentityResult 错误,就像我有一个重复的用户名。有些身份如何忘记包含电子邮件字段的唯一性!?
我的注册方法,如果用户名是 taken/used 并且在 "result.errors" 中是 IdentityErrors 的 IEnumerable,则 "result.Succeeded" 为 false。我想从重复的电子邮件中得到相同类型的错误。这可能吗?
[HttpPost("register")]
public async Task<IActionResult> Register(UserForRegisterDto userForRegisterDto)
{
var userToCreate = _mapper.Map<User>(userForRegisterDto);
var result = await _userManager.CreateAsync(userToCreate, userForRegisterDto.Password);
var userToReturn = _mapper.Map<UserForDetailedDto>(userToCreate);
if (result.Succeeded)
{
return CreatedAtRoute("GetUser", new { controller = "Users", id = userToCreate.Id }, userToReturn);
}
return BadRequest(result.Errors);
}
这已经被支持,使用 RequireUniqueEmail
, which defaults to false
. Here’s an example of how to set it to true
, taken from the docs 并相应修改:
services.Configure<IdentityOptions>(options =>
{
options.User.RequireUniqueEmail = true;
});
您可以通过调用 AddIdentity
(或您正在使用的任何变体)来实现相同的目的。这是该方法的一个示例:
services.AddIdentity<User, Role>(options =>
{
options.User.RequireUniqueEmail = true;
})
我的 "User" class 继承自 "IdentityUser",我想让 EmailAddress 唯一。但不是像这样创建一个独特的 属性
builder.Entity<User>()
.HasIndex(u => u.Email).IsUnique();
在模型构建器中,当我尝试在下面的方法中注册一个重复的电子邮件地址时抛出异常,我希望它 return 一个 IdentityResult 错误,就像我有一个重复的用户名。有些身份如何忘记包含电子邮件字段的唯一性!?
我的注册方法,如果用户名是 taken/used 并且在 "result.errors" 中是 IdentityErrors 的 IEnumerable,则 "result.Succeeded" 为 false。我想从重复的电子邮件中得到相同类型的错误。这可能吗?
[HttpPost("register")]
public async Task<IActionResult> Register(UserForRegisterDto userForRegisterDto)
{
var userToCreate = _mapper.Map<User>(userForRegisterDto);
var result = await _userManager.CreateAsync(userToCreate, userForRegisterDto.Password);
var userToReturn = _mapper.Map<UserForDetailedDto>(userToCreate);
if (result.Succeeded)
{
return CreatedAtRoute("GetUser", new { controller = "Users", id = userToCreate.Id }, userToReturn);
}
return BadRequest(result.Errors);
}
这已经被支持,使用 RequireUniqueEmail
, which defaults to false
. Here’s an example of how to set it to true
, taken from the docs 并相应修改:
services.Configure<IdentityOptions>(options =>
{
options.User.RequireUniqueEmail = true;
});
您可以通过调用 AddIdentity
(或您正在使用的任何变体)来实现相同的目的。这是该方法的一个示例:
services.AddIdentity<User, Role>(options =>
{
options.User.RequireUniqueEmail = true;
})