2010-04-16 12 views

Répondre

3

Je pense que ce que vous devez faire est de configurer une action gestionnaire de connexion après la connexion lorsque vous installez le middleware. Dans cette action, vous pouvez ensuite vérifier les paramètres, définir une session var, etc. J'ai dû me connecter ici pour créer un message à l'utilisateur que leur connexion a échoué. Je vérifie un paramètre 'login_failed' sur le formulaire de connexion.

def post_login(self): 
    """ Handle logic post a user's login 

    I want to create a login_handler that's redirected to after login. This would 
    check 

    - if user was logged in, if not then send back to login 
    - if user is admin, go to job list 
    - adjust the max age on the existing cookie to XX remember me timeframe 

    """ 
    if auth.check(not_anonymous()): 
     log.debug('checked auth') 
    else: 
     # login failed, redirect back to login 
     log.debug('failed auth') 
     redirect_to(controller="root", action="login", login_failed=True) 

    # expire this cookie into the future 
    ck = request.cookies['authtkt'] 
    response.set_cookie('authtkt', ck, 
      max_age=60*60*24*7, 
      path='/' 
    ) 

    redirect_to(controller="job", action="list") 

En réponse pour plus de détails, trop gros pour ajouter un autre commentaire:

J'ai quelques choses que vous pouvez regarder. Tout d'abord, ceci est mon docs j'écris comme repoze « résumé » pour expliquer à d'autres développeurs comment ce genre de choses fonctionne/terminologie employée:

http://72.14.191.199/docs/morpylons/auth_overview.html

j'ai commencé à l'aide du plugin repoze sql QuickStart: J'ai alors arraché leur setup_sql_auth et l'ai modifié pour nos propres besoins puisque nous faisons l'authentification SQL et LDAP dans nos applications. Allez vous assurer de regarder la source du plugin pour setup_sql_auth et passez-le jusqu'à ce que vous compreniez vraiment ce qu'il fait.

et puisque vous avez demandé sur config middleware ...

app = setup_morpace_auth(app, User, Group, Permission, meta.Session, 
         post_login_url='/root/post_login', 
         post_logout_url='/login', 
         log_level='debug', 
         log_file='stdout' 
        ) 
+0

u peut montrer comment gérer en middleware.py en python? im nouveau – Timmy

+0

Ok, mis à jour la réponse pour inclure plus de notes/détails sur la mise en place. – Rick

+0

merci, va faire! – Timmy