Cakephp с OpenID и аутентификацией пользователя - PullRequest
8 голосов
/ 05 мая 2010

У меня есть таблица «пользователи», и я хочу, чтобы мои посетители могли войти в систему под своей учетной записью openID. Для этого я использую OpenId Component для Cakephp , и он отлично работает (когда я захожу с URL Google, я получаю уведомление «успешно аутентифицирован!»).

Но сейчас я застрял, потому что не знаю, как дальше.

  • Нужно ли создавать запись пользователя для каждого пользователя, у которого есть новая запись в таблице "oid_associations" (я сохраняю все взаимодействия OpenId в базе данных mysql)?
  • Нужно ли аутентифицировать пользователя после входа в систему (или OpenID-компонент делает это автоматически?).
  • Полностью ли я неправильно понял концепцию?

1 Ответ

7 голосов
/ 05 мая 2010

Нет, вам не нужно обращаться к таблице "oid_associations", это таблица, которая используется только библиотекой OpenID.

Вместо этого вы можете использовать identity_url, чтобы выяснить, является ли он новым пользователем. Если это так, вы можете создать запись в своей таблице «пользователи». Например (при условии, что в вашей таблице «users» есть столбец «openid»):

$response = $this->Openid->getResponse($returnTo);

if ($response->status == Auth_OpenID_SUCCESS) {
    $user = $this->User->findByOpenid($response->identity_url);
    if ($user) {
        // existing user
    } else {
        // new user -> create user entry in the database
    }
}

Я не уверен, что правильно понял ваш второй вопрос. Если кто-то входит в систему с OpenID и вы получаете ответ Auth_OpenID_SUCESS, это означает, что этот пользователь успешно прошел аутентификацию. Как вы используете эту информацию в своем заявлении, зависит от вас.

Надеюсь, это ответит на ваши вопросы.

...