Подтвердить что ты не робот

Как добавить функцию выхода на сайт с поддержкой OpenID?

Недавно я добавил логин OpenID на свой сайт. Но я не знаю, как добавить функцию выхода из системы.

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

Пожалуйста, совет.

4b9b3361

Ответ 1

Сторона, которой доверяют OpenID, не может вывести пользователя из системы из OP, вы можете реализовать только локальный выход из системы. Точно так же, как RP не может зарегистрировать пользователя в OP.

Ответ 2

Отдельные поставщики OpenID предлагают разные URL-адреса для выхода из системы, к которым пользователь может быть перенаправлен.

Google: https://www.google.com/accounts/Logout

Yahoo: https://login.yahoo.com/config/login?logout=1

Было обсуждено предоставление разрешенным OPs для предоставления этих URL-адресов в качестве части стандарта; см. это обсуждение в списке рассылки OpenID.

Ответ 3

Я думаю, что вы смешиваете парадигмы (ненавидите это слово, но не можете думать о том, что лучше использовать сейчас). Ваша ссылка для входа отправляет пользователя на свой провайдер OpenID для аутентификации, но не пользователь регистрируется в своей учетной записи Google, что важный бит, который входит на ваш сайт, путем предоставления учетных данных через OpenID. Пользователь может быть уже зарегистрирован в своем поставщике OpenID; вы не знаете (не можете) знать и не должны заботиться.

Аналогично, ссылка на выходе на вашем сайте должна только вывести пользователя из вашего сайта, возвращая их в том же состоянии, что и до того, как они нажали кнопку входа. Возможно, пользователь уже вышел из своего провайдера OpenID; вы не знаете и не заботитесь. Этот сайт является хорошим примером:).

Ответ 4

Просто уничтожьте сеанс.

Ответ 5

Вы можете реализовать локальный выход для OpenID. Как сказал Чарльз Даффи, вы всегда можете использовать определенные URL-адреса, но при условии, что пользователь использует поставщика, которому вы знаете URL-адрес выхода из системы. Это может разочаровать, если ваш пользователь узнает, что все его учетные записи google выходят из системы, когда они выходят из вашего веб-сайта.

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

Это (IMHO) обеспечивает лучшую безопасность, если они используют его из открытого терминала. Это гарантирует, что пользователь, который регистрируется, всегда должен подтвердить свой пароль.

Чтобы сделать это на самом деле довольно просто, просто используйте расширение PAPE openid.ns.pape = "http://specs.openid.net/extensions/pape/1.0".
openid.pape.max_auth_age = 0

как часть URL-адреса при входе в провайдер OpenID.

Подробнее здесь http://code.google.com/apis/accounts/docs/OpenID.html

Ответ 6

Ниже приведен трюк, по которому я могу выйти из Google:

<iframe id="myIFrame" src="" style='display:none;' > 
 function logOutGoogle(){
     document.getElementById('myIFrame').src='https://www.google.com/accounts/Logout';
     timeOut();
 }

Ответ 7

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

Ответ 8

вы должны были создать некоторые переменные сеанса после успешной проверки с помощью провайдера openid, вам просто нужно уничтожить эти переменные сеанса. Вы не можете уничтожить сеанс, созданный поставщиком openid.

Ответ 9

Вот надежное решение для выхода из Google и вашего RP.

Просто позвоните в этот URI

https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=https://www.yourapp.com

он выйдет из Google и перенаправит обратно ваше приложение. Спасибо!

Вскоре я отправлю свое решение для выхода на Windows Live и facebook.com STS.