2017-09-08 2 views

Répondre

1

La valeur par défaut de Flask-Security reset_password affiche calls login_user puis redirige. Il n'y a pas d'option pour ignorer login_user.

Pour remplacer cela, vous devez écrire votre propre vue et modifier le point de terminaison pour qu'il pointe vers celui-ci au lieu de l'affichage par défaut avec app.endpoint. Dans ce cas, votre vue copie le code par défaut mais supprime la ligne login_user.

@app.endpoint(security.blueprint_name + '.reset_passowrd') 
@anonymous_user_required 
def reset_password(token): 
    ######## 
    # copied code from flask_security.views omitted 
    ######## 

    if form.validate_on_submit(): 
     after_this_request(_commit) 
     update_password(user, form.password.data) 
     do_flash(*get_message('PASSWORD_RESET')) 
     ######## 
     # removed login_user call 
     ######## 
     return redirect(get_url(_security.post_reset_view) or 
         get_url(_security.post_login_view)) 

    ######## 
    # copied code from flask_security.views omitted 
    ######## 

Tout cela étant dit, je déconseillerais faire. Cela perturbe le comportement interne et ne fait vraiment rien pour la sécurité. Si le code de l'extension change, votre code personnalisé ne reflète pas cela. Si l'utilisateur dispose d'un jeton de réinitialisation, il connaît le nom d'utilisateur et peut définir le mot de passe comme il le souhaite. Les obligeant à se connecter après cela n'est pas utile, ils ont déjà le nom d'utilisateur et le nouveau mot de passe.