Идентификационный сервер4. Доступ к информации о клиенте с _template

#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 имеет свою собственную модель, поэтому вы можете ссылаться на нее в шаблоне. Я предполагаю, что вопрос в том, можете ли вы/как передать модель на страницу шаблона. В качестве альтернативы замените страницу шаблона в контроллере