2012-06-22 6 views
2

Je veux développer une application commerciale sur GAE. Le propriétaire de l'entreprise n'aime pas ou ne comprend pas l'idée d'OpenID, insiste sur la mise en œuvre de la gestion des utilisateurs locaux: l'enregistrement à l'aide du login et du mot de passe stockés dans le magasin de données de l'application.Mettre en œuvre la gestion des utilisateurs « locale » sur GAE

je voudrais mettre en œuvre ce qu'il veut à l'aide fournisseur OpenID « local ». Cela semble être l'approche la plus directe. Existe-t-il un moyen de "déposer" la bibliothèque de fournisseurs OpenID existante (+ la boîte de dialogue de connexion + peut-être le workflow d'enregistrement) et de l'utiliser dans la même application? Janrain, par exemple, aurait-il besoin de beaucoup de bricolage pour faire ça?

Au cas où cela n'a pas été le chemin, puis-je créer une instance de l'utilisateur sur mon propre et d'utiliser le nom d'utilisateur + mot de passe magasin? Comment gérer la gestion de session alors?

Désolé, je ne suis pas très expérimenté en la matière et il me dérange vraiment de se laisser distraire par la gestion des utilisateurs du principal sujet d'affaires :(

+0

Comme je pense de plus en plus à ce sujet, est-il possible que tout ce que je besoin est d'écrire un login/mot de passe entré plaine et simple et, lorsque authentifié avec succès, créer une instance de l'utilisateur « non consolidé » et définissez son adresse e-mail et un "faux" OpenID comme federated_identity, puis continuer à l'utiliser? C'est à dire. quelque chose comme "user = get_current_user(), si l'utilisateur est None: user = google.appengine.api.users.User (email = ..., federated_identity = ...)" Je ne –

+0

pas tellement idée à ce sujet . Lorsque j'explorais cette même fonctionnalité, j'ai trouvé une solution pour créer son propre fournisseur openid local en Java en utilisant le lien de référence JOIDS (Java Open Id Server): http://code.google.com/p/openid-server/. alors essayez d'explorer le code pour cela pourrait être vous avez une bonne solution. – iMBMT

Répondre

3

Je pense que la mise en œuvre d'un fournisseur OpenID « virtuel » est pas le meilleur solution à votre problème Il vous suffira de stocker vos propres cookies/sessions pour savoir qui est l'utilisateur actuellement connecté.Pour faire cela manuellement sur Google App Engine n'est pas si facile, mais heureusement, il y a beaucoup de frameworks qui s'occupent de (gae-sessions en fait partie)

Je vous suggère de jeter un oeil sur le Flask-Login, qui peut être intégré avec votre moteur de recherche Google App Engine. ogin vous propose un gestionnaire de connexion qui s'occupe de tout le travail de fond avec des sessions sécurisées, et c'est à vous de décider qui est l'utilisateur connecté. Peu importe si elle connecté en utilisant une connexion personnalisée (nom d'utilisateur/mot de passe) ou un login OpenID, car dans les deux cas, vous aurez un User modèle qui stockera les informations supplémentaires pour un utilisateur particulier. Ensuite, vous devrez simplement définir cette entité user_db en tant qu'utilisateur connecté.

Vous pouvez vérifier gae-init (avertissement: je suis le créateur) comme un exemple sur la façon d'utiliser le Flask-Login, entre autres choses, avec Google, Facebook Twitter, &. Notez que Facebook et Twitter ne font pas partie des identifiants fédérés que Google propose.

Questions connexes