Компоненты представления не являются частью конвейера авторизации. Они являются частью конвейера рендеринга представления, и к тому времени уже слишком поздно отказывать в доступе или перенаправлении. Если компонент представления не должен отображаться, если пользователь не вошел в систему, просто верните пустой результат, т.е. return Content(string.Empty);
. В качестве альтернативы, вы можете оставить это в своем представлении:
@if (User.Identity.IsAuthenticated)
{
@await Component.InvokeAsync("MyComponent")
}
Последняя часть вашего вопроса - я думаю, полное недопонимание того, как все здесь работает. Компонент представления - это просто способ рендеринга частичного при выполнении какой-то дополнительной работы, которую частичный не может или не должен обрабатывать напрямую, например, внедрение зависимостей, запрос базы данных и т. Д. Здесь вы пытаетесь вернуть Страница бритвы, которая является не частичной. Страницы Razor работают только тогда, когда они напрямую направлены. Зависимости, которые вы не можете понять, как удовлетворить, удовлетворяются платформой во время создания модели страницы после маршрутизации.