2010-09-22 2 views
0

Je suis nouveau sur Google Apps Engine (travailler sur un projet existant pour quelqu'un d'autre) et il semble un peu différent de Django en ce qui concerne la connexion car la connexion est gérée par Google, j'essaye de faire en sorte que le app crée un cookie personnalisé pour un utilisateur lors de leur connexion mais ne peut pas sembler trouver le gestionnaire pour l'action de connexion ... Je suis désolé pour la question débutant, mais apprécierait si quelqu'un peut me diriger dans la bonne direction sur la façon d'accomplir ce. (juste en appelant une action sur la connexion d'un utilisateur)Google Apps Engine/Django, appelant une action lors de la connexion de l'utilisateur?

Je regarde quelques tutoriels, comme celui-ci: http://www.browse-tutorials.net/tutorial/login-register-logout-python-appengine et il dit simplement que vous venez de générer les liens depuis que google gère la connexion, donc je ne peux pas sembler figurer un solution à un problème comme celui-ci.

Merci

+1

Je ne suis pas sûr il y a un crochet (et je ne suis pas sûr qu'il n'y en a pas, donc ce n'est pas une réponse). Je suppose qu'il n'y en a pas, cependant. Notez que vous contrôlez l'endroit où la page de connexion Google redirige, une fois la connexion terminée, afin que vous puissiez en faire une URL qui répond à vos besoins. Bien sûr, si vous l'avez fait, vous ne pouvez pas empêcher l'utilisateur de cliquer sur cette URL à d'autres moments. –

+0

ahh ok, c'est une bonne idée, eh bien vous pouvez simplement faire une condition dans cette fonction de vue qui ne ferait l'action que si l'utilisateur est connecté .. merci c'est un conseil utile – Rick

+0

Je voulais dire qu'une fois qu'ils étaient connectés , ils pourraient frapper cette URL plusieurs fois, délibérément ou accidentellement. Vous pouvez également faire des choses qui sont conditionnelles à l'existence du cookie ACSID que les paramètres de connexion Google définissent, si pour une raison quelconque vous voulez faire ce travail précisément une fois par connexion Google. Je ne sais pas si cela est documenté/garanti, cependant, ou si ce n'est pas un moyen officiel de suspendre la session Google. –

Répondre

0

Je résolu ce problème en utilisant le système Django middleware et une session. Je pense que l'utilisation d'une session est le meilleur moyen de garantir que l'action ne se passe que lors de la connexion (alors qu'une url peut être rechargée manuellement).

Les sessions Django ne fonctionnent pas correctement, j'ai donc implémenté mes propres sessions. Cependant, il existe une bonne mise en œuvre spécifique à AppEngine que cet article souligne: http://blog.notdot.net/2010/02/Webapps-on-App-Engine-Part-5-Sessions

j'ai mis ma classe de middleware comme celui-ci, et ajouté à MIDDLEWARE_CLASSES dans settings.py:

class LoginManager(object): 
    def process_view(self, request, view_func, view_args, view_kwargs): 
     user = users.get_current_user() 
     if user is not None: 
      marker = Session.get(user.user_id()) 
      if marker is None: 
       login_action() 
       Session.set(user.user_id(), "true") 
Questions connexes