2
這就是我做的。ASP.Net核心(MVC6)無法用種子用戶登錄
public class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
var context = serviceProvider.GetService<ApplicationDbContext>();
var userManager = serviceProvider.GetService<UserManager<ApplicationUser>>();
var user0 = new ApplicationUser { UserName = "bob", Email = "[email protected]" };
var result = userManager.CreateAsync(user0, "Password1!").Result;
}
}
initialize方法是在最後運行Startup.cs的配置方法:
SeedData.Initialize(app.ApplicationServices);
當我看到在數據庫中,用戶是有預期。當我嘗試登錄時,我收到了無效的登錄嘗試。當我嘗試使用相同的電子郵件地址註冊用戶時,它不會檢測到重複的條目並添加具有相同地址的新用戶。
UserManager在控制器的上下文中表現出不同的行爲。我將如何能夠正確創建種子用戶,以便我可以登錄他們?
Id AccessFailedCount ConcurrencyStamp Email EmailConfirmed LockoutEnabled LockoutEnd NormalizedEmail NormalizedUserName PasswordHash PhoneNumber PhoneNumberConfirmed SecurityStamp TwoFactorEnabled UserName
e3ff23eb-5db9-4eb3-871e-e95232178e1c 0 241c36e0-b0a9-4c86-af98-6d38132947e9 [email protected] 0 1 NULL [email protected] BOB AQAAAAEAACcQAAAAECFF4uxt8kT3nZgU9nhfticduyI3OXAxCZg+XJT/0Id280Tgf6B9cCY+Il6beRTFWw== NULL 0 3e9a2185-d248-4589-aa30-ecbb145787ff 0 bob
我認爲唯一的關鍵是用戶名,而不是電子郵件......您是否嘗試讓用戶使用相同的用戶名? –
唯一的關鍵是ApplicationUserId列。 UserManager執行重複檢查,數據庫允許。但我確實試圖讓用戶使用相同的用戶名,並且仍然註冊它,並且我在數據庫中看到重複的記錄。如果我再次嘗試(通過控制器操作),則不會創建第三條記錄,並且出現驗證錯誤(用戶名/電子郵件已存在) – DanielC
在我的結尾,用戶名始終是完整的電子郵件地址。控制器可能使用完整的電子郵件,而您沒有(用戶名爲bob vs [email protected])? –