繁体   English   中英

ASP.NET Core 2.2 如何覆盖 UserManager.CreateAsync 以删除唯一用户名要求

[英]ASP.NET Core 2.2 How to override UserManager.CreateAsync to remove unique Username requirement

我正在尝试覆盖我的 UserManager.CreateAsync 以消除对唯一用户名的要求。 我怎样才能做到这一点?

到目前为止,这就是我所拥有的

public class CustomUserManager : UserManager<User>
{
    public string TenantId { get; set; }
    public CustomUserManager(IUserStore<User> store, IOptions<IdentityOptions> optionsAccessor,
    IPasswordHasher<User> passwordHasher, IEnumerable<IUserValidator<User>> userValidators,
    IEnumerable<IPasswordValidator<User>> passwordValidators, ILookupNormalizer keyNormalizer,
    IdentityErrorDescriber errors, IServiceProvider services, ILogger<UserManager<User>> logger) : base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators, keyNormalizer, errors, services, logger)
    {
    }

    public override async Task<IdentityResult> CreateAsync(User user, string Password)
    {
        ThrowIfDisposed();
        user.TenantId = this.TenantId; 
        if (user == null)
        {
            throw new ArgumentNullException("user");
        }
        var result = dbContext.Users.Any(u => u.UserName == user.UserName && u.TenantId == user.TenantId);
        if (result == true)
        {
            return IdentityResult.Failed();
        }
        return await base.CreateAsync(user, Password);
    }
}

由于我使用 base.CreateAsync,我无法强制创建用户。 如何覆盖 CreateAsync 正在执行的操作?

我坚持这一点。

请尝试设置 dbContext.Configuration.ValidateOnSaveEnabled = false; 看看它是否有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM