创建新用户
我创建了自定义用户系统,在CreateAsync
方法中,它创建了用户。
我喜欢知道如何以及在哪里检查用户是否已经根据电子邮件存在?
CreateAsync
方法返回任务。但是我如何检查用户是否已经存在。目前,它基于ID
您必须在创建之前验证用户(和密码(。假设身份框架模板,您可以使用此类内容来验证密码和用户:
var identityResult = await userManager.PasswordValidator.ValidateAsync(account.Password);
if (!identityResult.Succeeded)
return SomeError(identityResult);
// Validate the new user BEFORE creating in the database.
identityResult = await userManager.UserValidator.ValidateAsync(appUser);
if (!identityResult.Succeeded)
return SomeError(identityResult);
identityResult = await userManager.CreateAsync(appUser, account.Password);
if (!identityResult.Succeeded)
return SomeError(identityResult);
您可以在:
中设置验证选项public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
// Configure validation logic for usernames
manager.UserValidator = new UserValidator<ApplicationUser>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
// ...
}
请注意,这将假定用户名是电子邮件。如果您不想要这个,则应设置RequireUniqueEmail = false
。但是我认为在这种情况下,它不会检查唯一的电子邮件。因此,您可以添加此行以检查唯一电子邮件:
var isUniqueEmail = (await userManager.FindByEmailAsync(email) == null);