В Java, когда оператор «==» используется для сравнения двух объектов, он проверяет, ссылаются ли объекты на одно и то же место в памяти. Другими словами, он проверяет, являются ли имена двух объектов в основном ссылками на одно и то же место в памяти.
Класс Java String фактически переопределяет реализацию equals () по умолчанию в классе Object и переопределяет этот метод, чтобы он проверял только значения строк, а не их местоположения в памяти. Это означает, что если вы вызываете метод equals () для сравнения двух объектов String, то, пока действительная последовательность символов равна, оба объекта считаются равными.
Оператор
==
проверяет, являются ли две строки точно одним и тем же объектом.Метод
blockquote>.equals()
проверяет, имеют ли две строки одно и то же значение.
Скорее всего, вам нужно добавить
services.AddIdentity<IdentityUser, IdentityRole>(config =>
{
config.Password.RequireNonAlphanumeric = false; //optional
config.SignIn.RequireConfirmedEmail = true; //optional
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
в ваш метод ConfigureServices
в Startup.cs
В вашем методе ConfigureServices
вы уже вызываете AddDefaultIdentity
, который является новым дополнением в 2.1, которое защищает Identity без поддержки ролей. Чтобы добавить поддержку ролей и, следовательно, RoleManager
к вашей коллекции служб, измените код, как показано ниже:
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddRoles<IdentityRole>();
Я думаю, что вы пропустили вызов AddRoleManager. Вот аналогичная настройка, которую я имел, попробуйте:
services.AddIdentity<IdentityUser, IdentityRole>(o => {
o.Password.RequiredLength = 8;
})
.AddRoles<IdentityRole>()
.AddRoleManager<RoleManager<IdentityRole>>()
.AddDefaultTokenProviders()
.AddEntityFrameworkStores<ApplicationDbContext>();