2015-03-04 2 views
0

J'ai utilisé le décorateur montré here et l'a adapté à mes besoins (rôles multiples) Le décorateur vérifie les rôles et me dit si je ne suis pas autorisé, mais il ne me redirige pas à ma page de connexion comme le décorateur original.Flask: own login_required décorateur ne pas rediriger

def login_required(role="ANY"): 
    def wrapper(fn): 
     @wraps(fn) 
     def decorated_view(*args, **kwargs): 
      if not current_user.is_authenticated(): 
       return lm.unauthorized() 
      if ((role not in current_user.roles) and (role != "ANY")): 
       return lm.unauthorized() 
      return fn(*args, **kwargs) 
     return decorated_view 
    return wrapper 

Ok ici est le décorateur d'origine du flacon-login:

def login_required(func): 
    @wraps(func) 
    def decorated_view(*args, **kwargs): 
     if current_app.login_manager._login_disabled: 
      return func(*args, **kwargs) 
     elif not current_user.is_authenticated(): 
      return current_app.login_manager.unauthorized() 
     return func(*args, **kwargs) 
    return decorated_view 

Répondre

0

Votre code dit abosolulty rien, ce qui est une honte, dans tous les cas, il passe juste lm.unauthorized(), mais pourquoi vous n'utilisez pas redirect? J'espère que ça va un peu;)

+0

Lorsque je vérifie la fonction décorateur du fichier flask-login.py d'origine, aucune redirection n'est incluse. Il semble être manipulé dans la fonction non autorisée. – Kev

+0

Alors peut-être que vous devriez poster celui-là .. doh – brunsgaard

0

Désolé mais la redirection a fonctionné correctement - c'était seulement un problème dans mon view.py.

J'espère que vous trouverez au moins mon rôle-adaptation un peu utile!