重写abpusermanager,取消用户名不可重复问题

news/2024/5/19 23:43:34 标签: 服务器, .netcore

在domain中创建一个manager,继承UserManager
实现创建用户方法。

public class NonWasteCityUserManager: UserManager<IdentityUser>, IDomainService
{
    public NonWasteCityUserManager(IUserStore<IdentityUser> store, 
        IOptions<IdentityOptions> optionsAccessor, 
        IPasswordHasher<IdentityUser> passwordHasher, 
        IEnumerable<IUserValidator<IdentityUser>> userValidators, 
        IEnumerable<IPasswordValidator<IdentityUser>> passwordValidators, 
        ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, 
        IServiceProvider services, ILogger<UserManager<IdentityUser>> logger) 
        : base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators, 
            keyNormalizer, errors, services, logger)
    {
        
    }
    
    /// <summary>
    /// Creates the specified <paramref name="user"/> in the backing store with given password,
    /// as an asynchronous operation.
    /// </summary>
    /// <param name="user">The user to create.</param>
    /// <param name="password">The password for the user to hash and store.</param>
    /// <param name="validatePassword">to validate Password for the user in the store.</param>
    /// <returns>
    /// The <see cref="Task"/> that represents the asynchronous operation, containing the <see cref="IdentityResult"/>
    /// of the operation.
    /// </returns>
    public virtual async Task<IdentityResult> CreateAsync(IdentityUser user, string password, bool validatePassword = false)
    {
        ThrowIfDisposed();
        if (user == null)
        {
            throw new ArgumentNullException(nameof(user));
        }
        if (string.IsNullOrEmpty(password))
        {
            throw new ArgumentNullException(nameof(password));
        }
        var result = await UpdatePasswordHash(user, password,validatePassword);
        if (!result.Succeeded)
        {
            return result;
        }
        return await CreateAsync(user);
    }
    
    private async Task<IdentityResult> CreateAsync(IdentityUser user)
    {
        this.ThrowIfDisposed();
        // await UpdateSecurityStampInternal(user);
        // IdentityResult async = await ValidateUserAsync(user);
        // if (!async.Succeeded)
        //     return async;
        // if (this.Options.Lockout.AllowedForNewUsers && this.SupportsUserLockout)
        //     await this.GetUserLockoutStore().SetLockoutEnabledAsync(user, true, this.CancellationToken);
        await SetLockoutEnabledAsync(user, true);
        await UpdateNormalizedUserNameAsync(user);
        await UpdateNormalizedEmailAsync(user);
        return await Store.CreateAsync(user, this.CancellationToken);
    }
    
}

http://www.niftyadmin.cn/n/432273.html

相关文章

three-tile: 手写一套三维瓦片地图框架,大家是否有兴趣?

提到web端三维地图&#xff0c;最火的非cesium莫属&#xff0c;逼真的三维地图渲染技术叹为观止&#xff0c;但复杂的代码也让大部分程序员望尘莫及。 其实市面上的三维Gis平台还有不少&#xff0c;包括GoogleEather、WorldWind、Virtual Earth、ArcGIS、Mapbox-g、iTwons、pr…

-fsanitize=address -fsanitize=kernel-address

-fsanitizeaddress 是GCC/Clang编译器的一个选项&#xff0c;用于启用内存错误检测工具 AddressSanitizer。这个选项可以在运行时检测并且定位访问已释放对象、内存泄漏、缓冲区溢出等等内存相关错误。 在Qt中使用-fsanitizeaddress选项&#xff0c;可以通过修改.pro文件的QM…

chatgpt赋能python:Python爬虫:抓取数据的实用技巧

Python爬虫&#xff1a;抓取数据的实用技巧 如果您是一名数字营销从业者&#xff0c;那么您一定知道SEO的重要性。SEO是一项复杂的工作&#xff0c;但是其中包含了一个非常关键的步骤&#xff0c;就是通过爬虫从网站中抓取数据。Python是一个非常强大的工具&#xff0c;可以帮…

安装Canal

安装和配置Canal 安装和配置Canal1.开启MySQL主从1.1.开启binlog1.2.设置用户权限2.安装Canal2.1.创建网络2.3.安装Canal安装和配置Canal 下面我们就开启mysql的主从同步机制,让Canal来模拟salve 1.开启MySQL主从 Canal是基于MySQL的主从同步功能,因此必须先开启MySQL的主…

4.1.2 后验概率最大化的含义

朴素贝叶斯法将实例分到后验概率最大的类中&#xff0c;这等价与期望风险最小化。 假设采用0-1损失函数&#xff1a; L ( Y , f ( X ) ) { 1 , Y ≠ f ( X ) 0 , Y f ( X ) L(Y,f(X))\begin{cases} 1, \ Y \neq f(X) \\ 0, \ Yf(X) \end{cases} L(Y,f(X)){1, Yf(X)0, Yf(X…

CEM搜参策略简述

1、要解决的问题 模型有3个输出分数分别是 s c o r e 1 score_1 score1​, s c o r e 2 score_2 score2​, s c o r e 3 score_3 score3​,需要加权融合成最终的一个输出 s c o r e score score s c o r e w 1 ∗ s c o r e 1 w 2 ∗ s c o r e 2 w 3 ∗ s c o r e 3 …

Jenkins安装以及部署

本文基于war包形式部署的 需要提前下载Jenkins的war包 Jenkins 的安装和设置下载内容 https://mirrors.jenkins.io/war 版本对应 目录 1.初始化环境 2.安装jdk 安装git Maven配置 安装Jenkins 使用DockerFile的方式进行部署 1.初始化环境 mkdir -p /home/soft 2.安装…

Vintage的变体与解读应用

Vintage在风险管理中有很多变体&#xff0c;通常分为以下四类&#xff1a; 1.根据选取切片数据时间不一样&#xff0c;可划分为Month end&#xff08;月末&#xff09;与Cycle end&#xff08;期末&#xff09;两种。 说明&#xff1a; **Month end&#xff1a;**选取切片数…