c# - 如何在 ASP.Net Core 中为唯一的电子邮件地址添加 IdentityUser IdentityResult 错误
问题描述
我的“用户”类继承自“身份用户”,我想让 EmailAddress 独一无二。但不是像这样创建一个独特的属性
builder.Entity<User>()
.HasIndex(u => u.Email).IsUnique();
在我尝试在下面的方法中注册重复的电子邮件地址时引发异常的模型构建器中,我希望它返回一个 IdentityResult 错误,就像我有一个重复的用户名时一样。一些身份如何忘记包含电子邮件字段的唯一性!?
如果在“result.errors”中使用/使用了用户名和 IdentityErrors 的 IEnumerable,则“result.Succeeded”为假的我的注册方法。我想从重复的电子邮件中得到相同类型的错误。这可能吗?
[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
默认为false
. 这是一个如何将其设置为 的示例true
,取自文档并进行了相应修改:
services.Configure<IdentityOptions>(options =>
{
options.User.RequireUniqueEmail = true;
});
AddIdentity
您可以通过调用(或您使用的任何变体)来实现相同的目的。这是该方法的示例:
services.AddIdentity<User, Role>(options =>
{
options.User.RequireUniqueEmail = true;
})
推荐阅读
- vba - 如何在允许您访问其方法的变量中保存对由 `querySelectorAll` 匹配的项目的引用?
- java - Junit5 LauncherDiscoveryRequestBuilder selectPackage 找不到测试
- r - 后续:为 data.frame 中的每个 id 值创建错误消息
- android - 将插件应用于 Gradle KTS 项目失败
- r - 识别直方图中的点
- asp.net-mvc - ASP.NET MVC 中的模型缺少定义错误
- java - 使用邻接表检查有向图是否强连接
- python - 如何通过 Python 中的值访问键?
- flutter - 如何允许延迟关键字?
- c# - EpPlus保存更改后excel中的奇怪单词“x000D”