asp.net-mvc - 创建用户时 asp.net 身份 lockoutEnabled 始终设置为 true

标签 asp.net-mvc asp.net-identity .net-5

我编写了一段代码,使用_userManager.CreateAsync将用户添加到我的数据库中,这是我的 Controller 代码:

public async Task<IActionResult> Create([FromForm] UserDetailsViewModel userview)
        {
            if (ModelState.IsValid)
            {
                SiteUser user = new SiteUser();
                _mapper.Map(userview, user);//properties mapped using automapper.(works fine)
                if (!userview.LockoutEnabled)
                {
                    user.ExpirationTime = DateTime.MaxValue;//some custom property I added to my class
                }
                var result = await _userManager.CreateAsync(user,userview.Password);//user.LockoutEnabled is **false** here.
                if (result.Succeeded)//user.LockoutEnabled is **true** here and also in database.
                {                        
                    return new StatusCodeResult(StatusCodes.Status201Created);
                }
                else
                {
                    return new StatusCodeResult(StatusCodes.Status400BadRequest);
                }

            }
            else
            {
                return new StatusCodeResult(StatusCodes.Status400BadRequest);

            }
        }

这段代码工作正常并成功创建了用户。但是,当创建用户时,我的数据库中的 LockoutEnabled 字段等于 1。这不是我想要的。我在 CreateAsync(user,userview.Password) 之前设置了一个断点,并且用户将其锁定属性设置为 false。是否有我需要更改的默认行为,或者我是否遗漏了某些内容?

最佳答案

您可以在为应用程序配置安全设置时禁用它:
就我而言,在 Startup.csConfigureServices 方法中 - 查看标记行:

var identityOptions = new Action<IdentityOptions>(options =>
{
    options.SignIn.RequireConfirmedAccount = false;
    options.Password.RequireDigit = false;
    options.Password.RequireNonAlphanumeric = false;
    options.Password.RequireUppercase = false;
    options.Password.RequireLowercase = false;
    options.Password.RequiredLength = 3;

    // lockout setup
    options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(2);
    options.Lockout.MaxFailedAccessAttempts = 2;
    options.Lockout.AllowedForNewUsers = true;  // <<-- This line controls it   
});

services.AddDefaultIdentity<ApplicationUser>(identityOptions);  
// Rest of identity configuration...

options.Lockout.AllowedForNewUsers 设置为 false 就可以了。

关于asp.net-mvc - 创建用户时 asp.net 身份 lockoutEnabled 始终设置为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68953907/

相关文章:

asp.net-mvc - 什么导致asp.net无法创建/卷影复制错误?

asp.net - 不使用 OAuth/外部身份验证提供程序时,ASP.Net 身份声明有用吗?

ASP.NET 核心 Web API 授权属性返回 404 错误并强制重定向

azure-active-directory - 401 使用 MSAL 查询 .net 5 Web API

c# - 当 C# 使用不能为 null 的参数调用我的方法时,避免出现警告

c# - 使用父模型值的子模型验证。流利的验证。 MVC4

Asp.Net MVC - 重载操作方法

c# - ASP.net Identity 2.0 注销另一个用户

c# - 从 Web API 中的 Controller 返回由 OAuthAuthorizatioServer 生成的 JWT token

asp.net-core - 依赖倒置原则。为什么我可以访问 ASP.NET Core 5 中非直接引用项目的类?