Я разрабатываю веб-приложение с помощью ASP.NET Core 3.0 и Razor Pages. Я хочу добавить функцию, которая позволяет пользователям выполнять поиск по имени страницы - предположим, что пользователь ищет «пароль», а результат - «Изменить пароль», что является страницей Razor.
Я предполагаю, что модели страниц будут выглядеть так:
[SearchablePage(Name="Manage Account", Keywords="password,username,change")]
public class ManageAccountModel : PageModel
{
...
}
Пока мне удалось обнаружить страницы, введя IActionDescriptorCollectionProvider
и выполнив поиск PageActionDescriptor
элементов. Это покажет мне все страницы, которые есть в приложении.
Я не уверен, как добраться до фактического PageModel
класса для каждой страницы, поэтому я могу определить значение моего настраиваемого атрибута поиска.
Я также пытаюсь выяснить, авторизован ли пользователь для просмотра страницы - исходит ли это от атрибута авторизации или соглашения об авторизации, настроенного в Startup.cs.
Мы будем очень благодарны за любую помощь или указатели, где искать!
Спасибо!
Обновить
Мне удалось найти IAuthorizationService
, предоставленный фреймворком - документация. Теперь уловка состоит в том, чтобы получить все политики для бритвенной страницы.