我有 ASP.NET Core 2.1 MVC 应用程序。另外,在数据库中,我有 1 个用户担任“Admin”角色,但是当我尝试获取数据库中的用户列表时,它返回一个空列表。它通常从“Roles”和“UserRoles”表返回数据,但无法看到任何数据“Users”表中的数据,因此我无法使用 SignInAsync 或 PasswordSignInAsync 方法。 这是我的 dbContext:
public class AppDbContext : IdentityDbContext<User, Role, string>
{
public AppDbContext(DbContextOptions<AppDbContext> options):base(options)
{ }
// ...
}
这是我的启动项目:
services.AddDbContext<AppDbContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
});
services.AddIdentity<User, Role>()
.AddEntityFrameworkStores<AppDbContext>()
.AddDefaultTokenProviders();
// ...
确保 NORMALIZEDUSERNAME 和 NORMALIZEDEMAIL 的电子邮件和用户名的值相同(大写)。
我遇到的问题如下:
我直接通过实体用户插入用户,而不是通过 UserManager 方法中的 CreateAsync 插入用户。
这绕过了计算PasswordHash、SecurityStamp和数据库中其他字段的任何例程,因此PasswordSignInAsync因此无法工作。
上面对标准化电子邮件和标准化用户名的评论刚刚解决了我在种子数据中的问题,谢谢!!!