asp.net core mvc изменить маршруты по умолчанию в области идентификации

asp.net core 2.2 Идентичность была добавлена ​​через

services.AddIdentity<ApplicationUser, ApplicationRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders()
        .AddDefaultUI();  

Логин установлен на "/Identity/Account/Login":

options.LoginPath = "/Identity/Account/Login";

Теперь, как мне изменить маршруты из области Identity, которая была добавлена ​​через Startup.cs, чтобы я мог сделать, например:

https://www.example.com/admin вместо https://www.example.com/identity/account/login

или же

https://www.example.com/register чтобы перейти к HomeController->RegisterAction. Это позволило бы мне перехватить и перенаправить HomeController-> RegisterAction на HomeController->IndexAction, чтобы отключить регистрации.

1 ответ

Если кто-то ищет ответ для asp.net core mvc 2.2:

Когда вы вызываете DefaultUI, у вас нет конкретных страниц или контроллеров для изменения.

Вы должны помостить страницы, которые вы хотите изменить.

  1. щелкните правой кнопкой мыши проект
  2. Add -> New Scaffolded Item (если он отключен, прекратите отладку / запуск)
  3. Слева выберите Identity и нажмите Add
  4. Выберите свою страницу макета (~/Views/Shared/_Layoutcshtml), чтобы получить правильный макет
  5. выберите страницу, которую вы хотите переопределить, например, Аккаунт \ Регистрация
  6. Выберите свой класс контекста данных (или создайте новый, нажав [+])
  7. Нажмите кнопку Добавить

Теперь вы увидите в /Areas/Identity/Pages/Account/Register.cshtml

Разверните Register.cshtml и откройте файл Register.cshtml.cs. ('CodeBehind')

Теперь, если вы хотите отключить регистрацию, вы можете заменить

public void OnGet(string returnUrl = null)
{
  ReturnUrl = returnUrl;
}

с:

public IActionResult OnGet(string returnUrl = null) => RedirectToPage("/Account/Login"); // disable registrations

Дополнительная информация:

В случае, если кто-то [MSFT] читает это: было бы здорово, если бы вы могли отключить регистрации или изменить маршруты перенаправления через Startup.cs без необходимости создавать леса (что позволило бы вам обновлять пакеты без использования пользовательского интерфейса, который вы когда-то создавали в версии x.

Другие вопросы по тегам