Как войти в систему пользователя?
В вашем примере есть строка, показывающая, как завершить аутентификацию:
echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
Если $openid->validate()
возвращает true, это означает, чтопользователь, который утверждает, что $openid->identity
аутентифицирован.
Если вы сравните его со стандартной аутентификацией:
Стандартный auth:
- Пользователь вводит логини пароль
- Сервер проверяет, существует ли такая пара логина и пароля.
- Если есть, то пользователь аутентифицируется (с предоставленным им логином), поэтому мы устанавливаем cookie напомните его (или все, что вы хотите сделать при успешном входе в систему).
OpenID auth (с LightOpenID):
- Пользователь вводит идентификатор openid
- Сервер использует LightOpenID для аутентификации, а затем вызывает
$openid->validate()
- Если
validate()
возвращает true, пользователь аутентифицируется (с $openid->identity
), поэтому мы устанавливаем cookie, чтобы запомнить его (иливсе, что вы хотите сделать при успешном входе в систему).
Basically, как только вы подтверждаете, что пользователь является тем, кем он себя утверждает (т.е. он аутентифицировался), вы продолжаете, как если бы это был обычный аутентификатор.
Обычно вам нужно где-то хранить идентификационные данные,с идентификатором сеанса.
Откуда я должен получить информацию о зарегистрированном пользователе (как имя пользователя, почта)?
Имя пользователя в $openid->identity
.Однако вы можете использовать псевдоним в качестве отображаемого имени.Однако получение псевдонима и адреса электронной почты требует дополнительной настройки.По сути, перед вызовом $openid->authUrl()
вам нужно добавить:
$openid->required = array('namePerson/friendly', 'contact/email');
Эта строка заставит LightOpenID запрашивать эти параметры.Вы можете увидеть список других параметров (которые могут поддерживаться или не поддерживаться OP) на axschema.org .Затем, чтобы получить их значения, после вызова validate()
, позвоните $openid->getAttributes()
.Он вернет все доступные параметры, например:
array(
[namePerson/friendly] => Mewp
[contact/email] => mewp@example.com
)
Однако следует учитывать тот факт, что этот список может содержать другие параметры и может не содержать те, которые вы запрашивали.По сути, OP может свободно возвращать все, что хочет, поэтому вам нужно быть готовым к отсутствию некоторых значений.