Я обновил свое приложение ASP.Net MVC Core с 1.1 до 2.1, включая миграцию ASP.Net Identity с 1.1 до 2.1.
Я получил работу, включая интеграцию ASP.Net Identity EntityFramework с использованием Sqlite.
Моя startup.cs
конфигурация выглядит как this :
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>();
services.Configure<IdentityOptions>(options =>
{
// Password settings.
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 6;
options.Password.RequiredUniqueChars = 1;
// Lockout settings.
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
options.Lockout.MaxFailedAccessAttempts = 5;
options.Lockout.AllowedForNewUsers = true;
// User settings.
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
options.User.RequireUniqueEmail = false;
});
services.AddAuthentication()
.AddMicrosoftAccount(options =>
{
options.ClientId = Configuration["Authentication:Microsoft:ClientId"];
options.ClientSecret = Configuration["Authentication:Microsoft:ClientSecret"];
});
services.AddAuthorization(options =>
{
options.AddPolicy(PolicyNames.RequireTauchbold, policy => policy.RequireRole(Rolenames.Tauchbold));
});
И в Configure () у меня есть:
app.UseAuthentication();
Тогда в моем контроллере Ihave:
[Authorize(Policy = PolicyNames.RequireTauchbold)]
public class EventController : Controller
{
...
Весь исходный код можно найти здесь, на GitHub.
Проблема
Проблема в том, что вышеуказанная проверка на контроллере всегда возвращает "доступ"«отказано», даже если я правильно вошел в систему и мне назначена роль.Я не знаю, что здесь может пойти не так.У кого-нибудь есть идея, что я мог бы пропустить здесь ?
Обновление
Я понял, что простой, пустой атрибут [Authorize]
работает (обеспечивает вход в систему), но[Authorize(Policy = '...')]
не признает роль.Я проверил таблицы БД, но они выглядят хорошо для меня.Нужно ли мне что-то настраивать в базе данных, кроме ÀspNetUsers
, AspNetRoles
и AspNetUserRoles
?
Обновление 2:
Я получил работу с решением от @itminus, но имелдобавить вызов к AddDefaultUI()
в автозагрузке, чтобы снова заработали вход в систему и регистрация.Итак, мой запуск теперь содержит следующие строки для настройки Identity:
services.AddIdentity<IdentityUser, IdentityRole>()
.AddRoleManager<RoleManager<IdentityRole>>()
.AddDefaultUI()
.AddEntityFrameworkStores<ApplicationDbContext>();