2010-05-04 3 views
8

J'ai une table "users" et je veux permettre à mes visiteurs de se connecter avec leur compte openID. Pour cela j'utilise le OpenId Component for Cakephp et ça marche bien (quand je me connecte avec l'URL de Google, je reçois la notification "authentifié avec succès!").Cakephp avec OpenID et l'authentification de l'utilisateur

Mais maintenant je suis un peu coincé parce que je ne sais pas comment continuer à partir de là.

  • Dois-je créer un utilisateur d'entrée pour chaque utilisateur qui a une nouvelle entrée dans la table « oid_associations » (j'enregistre toutes les interactions OpenId dans la base de données MySQL)?
  • Dois-je authentifier l'utilisateur après la connexion (ou le composant OpenID le fait-il automatiquement?).
  • Est-ce que je comprends mal le concept?

Répondre

7

Non, vous n'avez pas besoin d'accéder à la table "oid_associations", c'est une table qui n'est utilisée que par la bibliothèque OpenID.

Au lieu de cela, vous pouvez utiliser le identity_url pour déterminer s'il s'agit d'un nouvel utilisateur. Si c'est le cas, vous pouvez ensuite créer une entrée dans votre table "users". Par exemple (en supposant que votre « utilisateurs » table a une colonne « 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 
    } 
} 

Je ne suis pas sûr que je comprends votre deuxième question correctement. Si quelqu'un se connecte avec un OpenID et que vous obtenez une réponse Auth_OpenID_SUCESS, cela signifie que cet utilisateur a été authentifié avec succès. La manière dont vous utilisez cette information dans votre application dépend de vous.

J'espère que cela répond à vos questions.

+0

merci qui m'a vraiment aidé et maintenant je comprends aussi comment (respectivement où) authentifier l'utilisateur. –