Используя статью, на которую ссылается Панайотис Канавос, я смог найти решение.
В ASP.NET Core 2.1.0-preview1 была строка .AddDefaultUI()
, которую не нужно было включать в Startup.cs
.
services.AddIdentity<IdentityUser, IdentityRole>(options => options.Stores.MaxLengthForKeys = 128)
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultUI()
.AddDefaultTokenProviders();
Однако в окончательной версии Core 2.1 этот же раздел был упрощен:
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>();
Решение: если вы измените AddDefaultIdentity
обратно на AddIdentity
, вы можете изменить значения по умолчанию. I.E. не включайте .AddDefaultUI()
(а также не формируйте пользовательский интерфейс), и вы можете написать свой собственный.
services.AddIdentity<IdentityUser, IdentityRole>(options => options.Stores.MaxLengthForKeys = 128)
.AddEntityFrameworkStores<ApplicationDbContext>()
// .AddDefaultUI()
.AddDefaultTokenProviders();
Тогда, думаю, безопасно удалить папку /Areas/Identity/
, но я не на 100%
Обновление:
Я очистил свой ответ, чтобы подробно описать окончательное решение, к которому я пришел, чтобы удалить страницы бритвы пользовательского интерфейса идентификации по умолчанию, которые поставляются с ASP.NET Core 2.1, и вместо этого использовать MVC.
1) In Startup.cs
,
public void ConfigureServices(IServiceCollection services)
{
// Unrelated stuff commented out...
// BEGIN: Identity Setup (Overrides default identity)
services.AddIdentity<ApplicationUser, IdentityRole>(options => options.Stores.MaxLengthForKeys = 128)
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
// END: Identity Setup
services.Configure<IdentityOptions>(options =>
{
// Set your identity Settings here (password length, etc.)
});
// More unrelated stuff commented out...
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
// Added after AddMvc()
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = $"/account/login";
options.LogoutPath = $"/account/logout";
options.AccessDeniedPath = $"/account/access-denied";
});
// More unrelated stuff commented out...
}
И, очевидно, замените как ApplicationUser
, так и IdentityRole
своими собственными классами, если это необходимо.
2) Удалите папку Area для Identity, которая поставляется по умолчанию с вашим проектом ASP.NET Core 2.1.
3) Создайте новый отдельный проект ASP.NET Core 2.0 (не «2.1») с Individual User Account
аутентификацией, выбранной в окне создания проекта.
4) Скопируйте AccountController
и ManageController
с соответствующими ViewModels
и Views
из проекта 2.0 в свой проект ASP.NET Core 2.1.
Выполняя вышеизложенное, я пока не столкнулся с какими-либо проблемами.
person
Daniel Congrove
schedule
11.07.2018
/Identity/Account/
, что не рекомендуется для использования в пользовательском интерфейсе. - person Daniel Congrove   schedule 11.07.2018Identity UI
. Он используется, поэтому вам не нужно создавать / обрабатывать / управлять более чем 50 файлами, используемыми пользовательским интерфейсом с шаблоном. Если вы хотите изменить пользовательский интерфейс, просто не используйте пакет. Вы можете создавать файлы с помощьюdotnet aspnet-codegenerator identity -dc WebApplication1.Data.ApplicationDbContext
и изменять их. - person Panagiotis Kanavos   schedule 11.07.2018Identity UI
, почему он был создан и как создавать страницы razor, чтобы вы могли их изменять. - person Panagiotis Kanavos   schedule 11.07.2018--useDefaultUI
для создания и настройки всех страниц. - person Panagiotis Kanavos   schedule 12.07.2018