7

Important: Я не имею в виду завершение сеанса, связанного с текущим запросом. Я имею в виду, учитывая некоторый идентификатор, можно ли очистить этот сеанс?Возможно ли закончить или удалить определенный сеанс в ColdFusion, кроме одного для этого запроса?

Я хотел бы реализовать Single Sign Out. В рамках этого было бы удобно, если при выходе из системы я мог бы отправить запрос POST в каждое приложение ColdFusion с помощью Single Sign In, сообщив им очистить существующий сеанс для этой записи.

Эти альтернативные методы, которые я надумал:

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

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

+1

Возможно? Да. CF использует внутренний класс 'coldfusion.runtime.SessionTracker' для создания и уничтожения сеансов. Лично я не большой по использованию недокументированных классов в живых приложениях, но именно так CF делает это FWIW. – Leigh

+0

@Leigh Поиск SessionTracker вызывает этот связанный с ним вопрос: http://stackoverflow.com/questions/14663205/coldfusion-sessiontracker-and-forcing-the-session-to-end, о котором вы прокомментировали! Наверное, я должен избегать этого ... –

+0

Ха-ха, я забыл это. Да, эти неожиданные изменения - вот почему я склонен избегать недокументированных материалов, если это не для некритической функции. Надеюсь, у кого-то будет лучшая идея. – Leigh

ответ

1

Просто идея, если вы отслеживаете свой CFID/CFTOKEN, и вы сами привязываетесь к странице с конкретным CFID/CFTOKEN, тогда вы можете теоретически «олицетворять» эту конкретную сессию и делать что-то с этим как вы были ими, включая выход из системы.

+0

Я предполагаю, что это будет работать теоретически, но я не буду использовать его. Слишком рискованно и не хотят посылать токены туда и обратно в открытом виде. –

+0

plaintext не так рискован, если он находится в Https. – Henry