【问题标题】:Entity framework Core with Identity and ASP.NET Core RC2 not creating user in database具有标识和 ASP.NET Core RC2 的实体框架核心不在数据库中创建用户
【发布时间】:2016-10-29 11:12:23
【问题描述】:

我正在开发一个带有身份验证的应用程序。我正在使用以下框架:

  • ASP.NET Core RC2
  • 实体框架核心
  • Npgsql EFCore 驱动程序

为了播种,我创建了一个DataSeeder 类,它作为瞬态服务添加到ConfigureServices 函数中,然后在配置函数中调用。它会检查IdentityUser 是否存在,如果不存在,它会创建一个名为 admin 的对象并将角色 Admin 添加到其中。

但是,当向用户添加角色时,我收到一个异常,指出违反了外键约束并且 ASP_NET_USERS 不包含具有该 PK 的条目。

我检查了数据库,它确实包含我创建的新角色,但用户表仍然是空的。

这是我的DataSeeder 课程:

public class DataSeeder {
    private DatabaseContext _context;
    private UserManager<IdentityUser> _userManager;
    private RoleManager<IdentityRole> _roleManager;

    public DataSeeder(DatabaseContext ctx, UserManager<IdentityUser> userManager, RoleManager<IdentityRole> roleManager) {
        _context = ctx;
        _userManager = userManager;
        _roleManager = roleManager;
    }

    public async Task CreateUserAsync() {
        if (! await _userManager.Users.AnyAsync()) {
            var adminRole = new IdentityRole("admin");
            var rootRole = new IdentityRole("root");

            await _roleManager.CreateAsync(adminRole);
            await _roleManager.CreateAsync(rootRole);

            var user = new IdentityUser {
                Email = "blabla@example.com",
                EmailConfirmed = true,
                UserName = "superadmin"
            };

            await _userManager.CreateAsync(user, "P@SSWORD");

            await _userManager.AddClaimAsync(user, new Claim("role", "admin"));
        }
    }
}

所以在AddClaimAsync 处抛出异常。任何帮助将不胜感激

【问题讨论】:

  • 我现在看不到,但是 IIRC createAsync 返回一个结果对象,您可以看到为什么它没有被创建。我想这是因为密码复杂或类似的原因。

标签: asp.net-core entity-framework-core


【解决方案1】:

检查_userManager.createAsync 的结果。

var result = await _userManager.CreateAsync(user, "P@SSWORD");

if (!result.Succeeded)
{
    // something went wrong, inspect the errors
}

您很可能会发现您的IdentityUser 上的必需属性丢失或密码无效。

【讨论】:

  • 好吧,这是一个愚蠢的错误.... >
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
  • 2016-09-22
相关资源
最近更新 更多