Я создаю приложение, используя ASP. NET Страницы бритвы.
Я уже выполнил регистрацию и вход в систему с использованием. NET Идентификационные данные. В моем частичном представлении _Layout я проверяю User.Identity.IsAuthenticated
. Если это не так, отображаются гиперссылки на страницы регистрации и входа.
Теперь, если User.Identity.IsAuthentiated
истинно, я хочу отобразить гиперссылку для выхода из системы. Однако, этот не требует отдельной Страницы Razor. Я просто хочу выйти из системы и перенаправить на Индекс. Я думал об использовании метода-обработчика, такого как:
public async Task<IActionResult> OnPostLogoutAsync()
{
await signInManager.SignOutAsync();
return RedirectToPage("/Index");
}
Возможно ли сделать его доступным с каждой страницы Razor? Или есть какой-то другой способ решения моей проблемы?
Другие вещи, о которых я думал:
Реализация этого как метода расширения PageModel. Однако, мне кажется, что это решение выглядит довольно неуклюжим и обманчивым. Мне нужно было бы ввести SignInManager<>
в каждую страницу Razor по умолчанию, и я чувствую, что это неправильно.
Создание контроллера MVC. Простое решение, которое будет работать. Тем не менее, я хотел бы знать, возможно ли это сделать с помощью простых Razor Pages.
Добавление модели в частичное представление _Layout. Однако для того, чтобы у меня был доступ к методу RedirectToPage
, модель должна наследоваться от PageModel
. В таком случае я получаю ошибки. Поэтому, если я не наследую от PageModel
, мне нужно найти другой способ перенаправления на другую страницу Razor, который делает это похожим на пункт 2, но с дополнительными шагами и более неуклюжим.