asp.net-core - 注册时检查电子邮件是唯一的
问题描述
我有一个 UserViewModel 和一个注册表单(电子邮件、密码),所以我想在后端检查电子邮件是唯一的,你能帮我解决这个问题吗
public string Username { get; set; }
public string Password { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string State { get; set; }
public string Country { get; set; }
public DateTime DateOfBirth { get; set; }
public int Role { get; set; }
public string Email { get; set; }
RuleFor(model => model.Password).NotEmpty().WithMessage(string.Format(Resource.Validation_Required, Resource.Password));
RuleFor(model => model.Password).Must(MustHaveCharacterNumberAndSpecialCharacter).WithMessage(string.Format(Resource.Validation_Password, Resource.Password));
RuleFor(model => model.Email).NotEmpty().WithMessage(string.Format(Resource.Validation_Required, Resource.Email));
RuleFor(model => model.Email).EmailAddress().WithMessage(string.Format(Resource.Validation_Email, Resource.Email));
async Task<bool> MustBeUnique(string email, Guid id, CancellationToken cancellationToken = default(CancellationToken))
{
var user = await userService.GetAsync(x =>
x.Email.Equals(email, StringComparison.InvariantCultureIgnoreCase) &&
x.Id != id,
cancellationToken
);
return user == null;
}
解决方案
我 AspNet Core 提供了一种内置方法来指定在您的启动类中添加身份提供者时电子邮件应该是唯一的,如下所示
public class Startup {
public void ConfigureServices(IServiceCollection services){
services.AddIdentity<ApplicationUser, IdentityRole> (options =>
{
options.User.RequireUniqueEmail = true;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
}
}
通过为用户发送此电子邮件,可以检查用户在您的应用程序中注册时他们是否是唯一的
推荐阅读
- java - Mockito:拦截方法调用而不引用对象
- python-3.x - 机器学习预测另一个值
- c - 使用 pread() 实现自己的 read() 系统调用
- python - Python 仅向 excel 文件添加第一个条目
- c# - 如何使用 C# 将 excel 文件中的数据插入 microsoft localdb 数据库
- python - 使用 Python googleapiclient 将数据写入 Google Sheet
- angular - 找不到角度模块:错误:无法解析“fs”“路径”
- azure - 天蓝色 | Ubuntu 机器与 Windows10 机器成本核算
- java - 如何为以下代码应用枚举。规则是枚举值
- angular - 如何通过选择器 id 作为键以角度获取组件类的实例?