Openid get Provider - PullRequest
       3

Openid get Provider

1 голос
/ 01 января 2011

Я использую lightopenid в своем проекте php в качестве системы входа в систему, и после того, как пользователь отменил аутентификацию и вернулся на мой сайт, я хочу знать, с какого сайта он отменил аутентификацию.PHP HTTP_REFERER, но он не может получить реальный URL сайта.Предположим, что пользователь пришел со страницы аутентификации Yahoo, я хочу знать, что это URL Yahoo!

Как мне этого добиться?В основном я хочу знать, как получить URL предыдущей страницы в php, если это работает.

Ответы [ 2 ]

2 голосов
/ 01 января 2011

Если вам действительно нужно, вы можете сделать что-то вроде этого:

if(isset($_POST['openid_identifier'])) {
    $openid->identity = $_POST['openid_identifier'];
    $openid->returnUrl .= '?identifier=' . urlencode($openid->identity);
    header('Location: ' . $openid->authUrl());
}

Затем, когда пользователь отменяет:

if($openid->mode == 'cancel') {
    $openid->identity = $_GET['identifier'];
    echo 'User has canceled authentication! '
       . 'The authentication url was ' . $openid->authUrl();
}

Идея состоит в том, чтобы заставить провайдера отправить заявленный идентификатор через URL-адрес возврата. Затем вы можете просто вызвать $ openid-> authUrl () для этого идентификатора и получить URL, на который вы перенаправили своего пользователя.

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

0 голосов
/ 01 января 2011

Вы не можете, и это не имело бы смысла, если бы вы могли.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...