用户注册以根据电子邮件 - 自定义USERSTORE检查用户是否存在



我创建了自定义用户系统,在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);

相关内容

  • 没有找到相关文章

最新更新