Первое и последнее событие в дотнетнуке приложения - PullRequest
1 голос
/ 19 апреля 2011

Я должен добавить логику, когда пользователь входит в систему и выходит из приложения dnn.Но я не хочу менять модуль входа в систему или что-то в DNN.Есть ли какое-нибудь событие, которое я могу поймать?

Ответы [ 2 ]

3 голосов
/ 30 апреля 2011

Вы можете указать DNN перенаправить на специальную страницу при входе и выходе.

Посетите Администратор -> Учетные записи пользователей -> Настройки пользователя

enter image description here

Вы бы хотели перенаправить их на страницу «LoginSuccess.aspx», на которой был создан пользовательский модуль, который выполняет следующие действия:

  • Выполняет пользовательскую логику при входе пользователя в систему
  • Перенаправляет пользователя на полезную страницу

Вы можете сделать то же самое для выхода из системы. Вы можете использовать ту же страницу и тот же модуль для выхода из системы, что и при входе в систему, если хотите - вы просто захотите проверить, аутентифицирован ли текущий пользователь или нет, чтобы определить, какую логику выполнять и какую страницу перенаправить. к.

Сводка шагов для специальной страницы LoginSuccess

  1. Создать страницу DNN с именем LoginSuccess.aspx
  2. Изменить параметры страницы: не показывать в меню, приоритет карты 0, доступен только для аутентифицированных пользователей
  3. Создание пользовательского модуля DNN, который выполняет пользовательскую логику при входе пользователя в систему
  4. Добавить модуль на эту страницу
  5. Обязательно перенаправьте пользователя куда-нибудь после того, как ваша пользовательская логика завершит обработку

Промыть и повторить для выхода из системы

Я не знаю, позволяет ли этот метод перенаправить пользователя на последнюю страницу, на которой он находился перед входом / выходом из системы. Если бы мне пришлось угадывать, я бы предположил, что вы потеряете эту функциональность.

Если у вас возникают проблемы при выходе из системы, когда пользователь определяет, кто только что вышел из системы, это можно решить путем сохранения идентификатора пользователя в состояние сеанса при входе пользователя (в модуле DNN настраиваемого входа выше). Что-то вроде: Session ("UserID") = 'текущий идентификатор пользователя'

Работа с особыми случаями

Убедитесь, что эти «специальные страницы», содержащие эти модули обработки входа / выхода, ограничены следующим:

  • Не включать в навигацию
  • Карта сайта Приоритет 0

И вы, вероятно, захотите, чтобы ваш модуль «Процессор выхода из системы» выполнял следующие действия, если к нему обращаются вручную пользователь maliciuos / раздражающий / потерянный или бот (Пример: пользователь переходит прямо к MySite / ProcessLogout.aspx):

  • Если к вашему модулю выхода обращаются, но сессия («ID пользователя») - ничто, тогда перенаправьте на домашнюю страницу сайта и не обрабатывайте свою пользовательскую логику выхода пользователя.

Я считаю, что это отвечает на ваш вопрос, но, возможно, не так, как вы надеялись. Я не нашел событие, которое вы могли бы просто обработать без изменения ядра DNN, как предложено @capdragon. Если вы воспользуетесь этим методом, обязательно закомментируйте его очень хорошо и измените код таким образом, чтобы его можно было вставлять при копировании для развертывания в будущих версиях DNN (например, при каждом обновлении DNN)

0 голосов
/ 19 апреля 2011

Я бы изменил cmdLogin_Click () и добавил вызов в ваш класс.

Я делал это в прошлом.эта страница часто не меняется.

...