UserManager.CreateAsync 未将用户添加到数据库

Pas*_*cal 7 asp.net-identity asp.net-core

我有这个 Seeder 类,它在 Configure 方法的 Startup.cs 文件的末尾被调用:

public class UserSeeder
{
    private readonly ApplicationDbContext _context;
    private readonly UserManager<ApplicationUser> _userManager;
    public UserSeeder(ApplicationDbContext context, UserManager<ApplicationUser> userManager)
    {
        _context = context;
        _userManager = userManager;
    }

    public async Task Seed()
    {
        if (!await _context.Users.AnyAsync())
        {
            var user = new ApplicationUser()
            {
                UserName = "admin",
                Email = "admin@test.com"
            };
            await _userManager.CreateAsync(user, "passwort4admin");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

代码被执行,我什至在方法调用周围放置了一个 try/catch 但没有发生错误并且没有用户插入到数据库中!

为什么不?

小智 7

问题是密码的复杂性。添加问题将解决的大写和数字和符号

  • 这是一个可能的原因,但这取决于您的密码要求是如何设置的。只需检查 `userManager.CreateAsync()` 的返回值是否有错误。 (7认同)

Joe*_*kes 4

在幕后UserManager<>使用IUserStore您是否在 IOC 容器的startup.cs 中配置了此用户存储?

services.AddIdentity<ApplicationUser, ApplicationRole>()
    .AddEntityFrameworkStores<MyContext, Guid>()
    .AddUserStore<ApplicationUserStore>() //this one provides data storage for user.
    .AddRoleStore<ApplicationRoleStore>()
    .AddUserManager<ApplicationUserManager>()
    .AddRoleManager<ApplicationRoleManager>()
    .AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)