Начиная с ядра 2.1 для asp.net, MVC не поддерживается как модель по умолчанию с Identity. Я хочу запустить Identity с MVC в ядре asp.net 2.2
Сделайте длинную историю короткой. Это сайт asp.net 4.6.2 с локальной базой данных, который я хочу обновить до ядра 2.2 asp.net. Я думал, что это будет просто. Так неправильно я был. Итак, что я сделал:
- Создан новый проект ASP.net core 2.0 с локальной идентификацией
- Сначала создайте контекст ef с базой данных с помощью Scaffold-DbContext
- Исправлено, так что EF правильно загружается при запуске.
- Удалены aspnetusers, aspnetuserroles, aspnetuserlogin, модели aspnetroles из сгенерированного скаффолда с помощью Scaffold-Dbcontext
- Обновлен ApplicationDbContext для наследования от IdentityDbContext. ApplicationUser наследуется от IdentityUser
- После того, как я подделал, что миграция была применена, я вручную добавил следующие столбцы в aspnetusers
6.1 ConcurrencyStamp
6.2 NormalizedUserName
6.3 NormalizedEmail
6.4 Изменено имя LockoutEnd? заблокировать конец
Система строит, но я все еще не могу заставить ее использовать контроллер учетной записи. Я следовал за шагами в https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-2.2
безрезультатно. Кажется, что я делаю, я не могу заставить его читать контроллер mvc даже после того, как я установил личность.
Я думаю, что разница в реализациях Identity в ядре asp.net 2.X Identity либо высока, либо сужена относительно более ранних реализаций.
Включенная часть моего запуска
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>()
// services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddRazorPagesOptions(options =>
{
options.AllowAreas = true;
//options.Conventions.AuthorizeAreaFolder("Identity", "/Account/Manage");
//options.Conventions.AuthorizeAreaPage("Identity", "/Account/Logout");
});
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = $"/Account/Login";
options.LogoutPath = $"/Account/Logout";
options.AccessDeniedPath = $"/Account/AccessDenied";
});
// using Microsoft.AspNetCore.Identity.UI.Services;
services.AddSingleton<IEmailSender, EmailSender>();
}
Я хочу использовать MVC с Identity Core 2.2 со старой базой данных из Identity .Net.
Так есть предложения?