Я пытаюсь добавить аутентификацию / вход в свое приложение Blazor-server. Я не хочу использовать материал Identity, который настраивает страницы и базу данных.
Когда я сделал это с помощью бритвенных страниц, у меня могла быть страница для входа в систему с таким кодом:
var claims = new List<Claim>{
new Claim(ClaimTypes.Name, Input.Name),
};
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var principal = new ClaimsPrincipal(identity);
await HttpContext.SignInAsync(
CookieAuthenticationDefaults.AuthenticationScheme, principal);
Это будет входить в систему с использованием файлов cookie, и я могу заблокировать доступ к страницам или показать / скрыть материал на основе утверждений или независимо от того, вошли вы в систему или нет.
Теперь, если бы я использовал Identity, он бы настроил бритвенные страницы для входа в систему и управления пользователями, но вместо этого я пытаюсь выполнить функцию входа в систему с помощью компонента razor, и я действительно не могу найти подход к этому. Я могу попробовать ввести HttpContextAccessor и использовать это:
HttpContext httpContext = HttpContextAccessor.HttpContext;
await httpContext.SignInAsync(
CookieAuthenticationDefaults.AuthenticationScheme, principal);
Но это вызывает исключение: Компонент рендеринга необработанного исключения: заголовки доступны только для чтения, ответ уже начался. System.InvalidOperationException: заголовки доступны только для чтения, ответ уже начался.
Похоже, что большая часть того, что я могу найти, основывается на подходе к страницам бритвы.
Возможно ли войти в систему с помощью бритвенного компонента?