#identityserver4
#сервер идентификации4
Вопрос:
Я хочу настроить страницу, сгенерированную на основе «имени клиента». Могу ли я получить доступ к данным клиента со страницы ASP _template, доступны ли они на данном этапе конвейера?
Я хочу иметь разный рендеринг в зависимости от того, используют ли они IFrame в первую очередь или нет. Может быть, есть лучший способ достичь этого
Спасибо
Ответ №1:
Вы можете настроить пользовательский интерфейс в AccountController так, как вам нравится, и он также отвечает за проверку имени пользователя/пароля, и, следовательно, на этом этапе он имеет полный доступ к данным пользователя и клиента.
На рисунке ниже показана взаимосвязь между IdentityServer и классом AccountController. И код в контроллере выполняется до того, как страница будет отрисована, в классическом типичном стиле MVC:
Если вы хотите иметь несколько макетов, то одним из вариантов является наличие нескольких файлов _ViewStart, как показано на рисунке ниже:
Альтернатива в зависимости от того, сколько вам нужно настроить представление, вы всегда можете добавить пользовательскую логику и в файл layout.cshtml.
Кроме того, вы можете использовать функцию @section для включения различного содержимого в макет в зависимости от различных факторов.
У вас здесь много вариантов.
Комментарии:
1. Но страница _template отображается до запуска методов в контроллере, не так ли? Я хочу скрыть верхние и нижние колонтитулы, когда клиент IFRAME. Вы хотите сказать, что я должен скрыть их в методе контроллера? Каков порядок вещей, который называется в конвейере?
2. смотрите мой обновленный ответ, вы можете настроить эту страницу так, как вам нравится, вы контролируете ситуацию
3. Я вижу, что методы в контроллере учетных записей срабатывают перед кодом в _template, поэтому, возможно, я смогу передать данные через модель. На вашей диаграмме я хочу изменить крайнее левое диалоговое окно до того, как пользователь войдет в систему. Таким образом, этот первый диалог выглядит как ваш, или у него есть брендинг сверху и снизу, если другой клиент
4. Да, именно так работает MVC, контроллер запускает свою логику , выбирает, какое представление выполнить, а затем отображает представление. Вы можете просто проверить это, установив точку останова в классе account controller.
5. Но _template применяется к каждой странице, модель из контроллера передается в cshtml «тела», отображаемый в шаблоне. Я хочу изменить шаблон в зависимости от клиента. Я мог бы поместить голову/ногу в каждый cshtml и показать/скрыть их, но шаблон был бы проще. Очевидно, что каждый cshtml имеет свою собственную модель, поэтому вы можете ссылаться на нее в шаблоне. Я предполагаю, что вопрос в том, можете ли вы/как передать модель на страницу шаблона. В качестве альтернативы замените страницу шаблона в контроллере