К сожалению, два других ответа неверны - вопрос на самом деле относится к новому расширению AddDefaultIdentity (), которое использует страницы Razor для обслуживания пользовательского интерфейса по умолчанию.Ответ, который решает эту проблему, не удалит функциональность регистра, как было запрошено в вопросе.
Фон
AddDefaultIdentity работает аналогично AddIdentity, но также включает вызовв AddDefaultUI, который дает вашему приложению доступ к новым представлениям бритвы Identity (в настоящее время их 28), они находятся в новой библиотеке классов бритвы.Обратите внимание, что это не единственное различие между AddDefaultIdentity и AddIdentity (см. Далее).
Чтобы изменить представления по умолчанию, вам необходимо переопределить («scaffold») представления в вашем проекте, а затем вы можете изменить их.,Если вы не переопределите представления, или если вы переопределите их, а затем удалите файлы cshtml, вы просто вернетесь к версиям пользовательского интерфейса по умолчанию!Даже если вы удалите ссылки, например, зарегистрироваться, пользователь все равно сможет перейти к представлению реестра по умолчанию, если он угадает URL.
Вариант 1 - Переопределить представления
Если вы хотите сохранить некоторые изпредставления по умолчанию, а также изменять или удалять другие, вы можете переопределить представления следующим образом ( из этого документа ):
- Щелкните правой кнопкой мыши на своем проекте> Добавить> Новый элемент лесов
- На левой панели диалога Add Scaffold выберите Identity> Add
- . В диалоговом окне Add Identity выберите нужные параметры.
Теперь вы можете либо просто изменитьвнешний вид и функциональность переопределенного вами представления, или «удалить» его можно вернуть 404 или перенаправить куда-нибудь еще.Если вы удалите это переопределенное представление, пользовательский интерфейс по умолчанию вернется!
Этот подход может быстро запутаться, если вы хотите переопределить все представления.
Вариант 2 - Не добавлять пользовательский интерфейс по умолчанию
Другой вариант - вернуться к старому способу добавления идентификаторов, который не вызывает AddDefaultUI, недостатком является то, что вам нужно будет добавить все представления самостоятельно.Вы можете сделать это следующим образом ( из этого документа - хотя игнорируйте первую строку о переопределении всех представлений, которая относится к варианту 1 выше):
//remove this: services.AddDefaultIdentity<IdentityUser>()
//use this instead to get the Identity basics without any default UI:
services.AddIdentity<IdentityUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
//this assumes you want to continue using razor views for your identity UI
//it specifies areas can be used with razor pages and then adds an
//authorize filter with a default policy for the folder /Account/Manage and
//the page /Account/Logout.cshtml (both of which live in Areas/Identity/Pages)
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddRazorPagesOptions(options =>
{
options.AllowAreas = true;
options.Conventions.AuthorizeAreaFolder("Identity", "/Account/Manage");
options.Conventions.AuthorizeAreaPage("Identity", "/Account/Logout");
});
//configures the application cookie to redirect on challenge, etc.
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = $"/Identity/Account/Login";
options.LogoutPath = $"/Identity/Account/Logout";
options.AccessDeniedPath = $"/Identity/Account/AccessDenied";
});
//configures an email sender for e.g. password resets
services.AddSingleton<IEmailSender, EmailSender>();
Обратите внимание, что я неНа 100% убеждены, что этот второй подход также без проблем, как уже упоминалось выше, есть и другие различия между AddDefaultIdentity и AddIdentity.Например, последний добавляет сервис RoleManager, а первый - нет.Кроме того, мне неясно, будут ли оба этих подхода поддерживаться и поддерживаться в равной степени в будущем.
Если вы сомневаетесь в том, что делают вышеуказанные варианты (и если у вас есть несколько часов, чтобы убить), вы можете посмотретьв источник AddDefaultIdentity (который также вызывает AddIdentityCookies и AddIdentityCore ) по сравнению со старым AddIdentity .
3 - Гибридный подход
На данный момент наилучшим вариантом, вероятно, является объединение предыдущих 2 следующим образом:
- Настройка проекта на использование идентификатора по умолчанию
- Поместите только те представления, которые вы хотите включить, и отредактируйте их соответствующим образом
- Переключитесь на старый вызов AddIdentity и включите параметры бритвы, как показано в варианте 2 (при необходимости корректируя в зависимости от того, какие представления вы включили
Теперь у вас есть только те представления, которые вы хотите, и они основаны на реализациях по умолчанию, что означает, что большая часть работы выполнена за вас.ese views.