Отправка HTTP POST-запроса

Чтобы реализовать единый выход, я хотел бы, чтобы пользователь выходил из приложения B дополнительно, когда пользователь щелкает выход из приложения A. Возможно ли реализовать это с помощью какой-либо формы запроса POST к приложению B? то есть, когда пользователь нажимает на выход:

  1. Создайте существующий запрос POST для выхода из приложения A
  2. Также сгенерируйте дополнительный POST-запрос для выхода из приложения B.

person Subramanian    schedule 24.06.2009    source источник
comment
Вам нужно быть более ясным. т.е. на каком языке вы программируете.   -  person Colin    schedule 24.06.2009


Ответы (6)


Самый простой способ сделать это — проверить, есть ли у вашего поставщика SSO функция единого входа.

Кодирование и развертывание сделали бы ваше общее ИТ-решение немного хрупким.

Еще одно предложение — обсудить это с вашим (предпринимательским) архитектором, поскольку SSO обычно является инициативой предприятия, и указать ей (очень убедительные) аргументы в этом сообщении: http://lists.danga.com/pipermail/yadis/2005-July/001085.html

person Community    schedule 24.06.2009

Да, как вы это сделаете, зависит от языка программирования, который вы используете.

Например, в ASP.Net вы должны использовать System.Net.HttpWebRequest при обработке события Logout приложения A, чтобы сделать запрос на выход из приложения B.

Если вы можете опубликовать, на каком языке вы работаете, я могу привести правильный пример

person RobV    schedule 24.06.2009
comment
Это приложение J2EE. язык Java - person Subramanian; 24.06.2009
comment
Как правило, язык, на котором я не работаю или хорошо знаю, кто-то другой должен будет привести пример - person RobV; 24.06.2009

В зависимости от реализации вашей системы аутентификации, возможно, вы можете/нужно отправлять POST с помощью JavaScript, а не со стороны сервера.

person Ikhwan    schedule 24.06.2009

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

POST (без использования Javascript или подобного) происходят при отправке формы. Поскольку форма может иметь только одно действие, она может быть нацелена только на одну серверную страницу.

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

Однако, если вы настроены на отправку POST на разные страницы, см. этот учебник для одного хака, связанного с iframe — http://www.codeproject.com/KB/scripting/multiact.aspx

person Jon    schedule 24.06.2009
comment
Когда приложение A перенаправляет запрос в приложение B, мы не показываем страницу выхода из приложения B? Это означает, что когда пользователь нажимает кнопку выхода из приложения A, мы показываем ему страницу выхода из приложения B. - person Subramanian; 24.06.2009
comment
Нет, вы делаете это исключительно на бэкенде и отправляете пользователю только исходную страницу выхода. Приложение A фактически будет действовать как пользователь при взаимодействии с приложением B (и ничего не возвращать при условии успеха или ошибки выхода из системы в случае сбоя приложения). - person Jon; 24.06.2009
comment
Я пробовал URLConnection с небольшим успехом. Ajax исключен, так как он будет междоменным. - person Subramanian; 24.06.2009
comment
Вам нужны файлы cookie или что-то подобное? HTTPClient может предоставить все, чего не хватает, если это так. http://www.innovation.ch/java/HTTPClient/urlcon_vs_httpclient.html - person Jon; 25.06.2009

Если ваш сеанс входа в систему хранится в файле cookie, и вам больше ничего не нужно предоставить для выхода из приложения B, очистка файла cookie в javascript обычно уничтожает сеанс и выводит пользователя из системы.

person futureelite7    schedule 26.06.2009

Как насчет аутентификации на основе файлов cookie? Один и тот же файл cookie аутентифицирует пользователя для различных приложений (в вашем случае 2 разных приложения). Как только пользователь выходит из одного приложения (приложение A), он делает файл cookie недействительным (по дате истечения срока действия), так что всякий раз, когда пользователь отправляет запрос POST для отдыха приложения (приложение B) запрос не обрабатывается. Для каждого приложения требуется сервлет, который отслеживает каждый запрос POST для проверки файла cookie.

person royalghost    schedule 03.07.2009
comment
Решил эту проблему - ввел токен (время создания сеанса) и кэшировал этот токен в приложении. Если запрос поступает через кнопку «Назад», была введена проверка, чтобы увидеть, был ли этот токен кэширован/заархивирован в приложении. Если токен заархивирован, пользователь будет перенаправлен на страницу тайм-аута сеанса. - person Subramanian; 08.07.2009