Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
python:flask:login [2021/10/20 05:05] marclebrun [Déconnexion] |
python:flask:login [2021/10/20 06:11] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Login ====== | ====== Login ====== | ||
- | Système de login simple sans utiliser le paquet **Flask-Login** (pour l'instant :-) ) | + | Système de login simple sans utiliser de plugins |
+ | tels que **Flask-Login** ou **Flask-User** | ||
+ | (pour l'instant :-) ) | ||
===== Formulaire ===== | ===== Formulaire ===== | ||
Ligne 34: | Ligne 36: | ||
<code python> | <code python> | ||
- | from flask import request, session, redirect, flash | + | from flask import request, session, redirect, flash, render_template, url_for |
- | from flask import render_template, url_for | + | from werkzeug.security import check_password_hash |
- | from werkzeug.security import generate_password_hash, check_password_hash | + | |
</code> | </code> | ||
Ligne 106: | Ligne 107: | ||
@app.before_request | @app.before_request | ||
def before_request(): | def before_request(): | ||
- | g.current_user = | + | |
+ | # Rechercher l'utilisateur selon le login sauvé dans la session | ||
+ | |||
+ | # La valeur renvoyée peut être un objet ou un dictionnaire contenant | ||
+ | # les propriétés de l'utilisateur, ses droits, etc... | ||
+ | |||
+ | # Si pas trouvé, la valeur renvoyée est None | ||
+ | |||
+ | g.current_user = recherche_selon_login(session["login"]) | ||
+ | </code> | ||
+ | |||
+ | ===== Templates ===== | ||
+ | |||
+ | Afficher soit le lien **login** si on n'est pas connecté, soit le lien **logout** | ||
+ | si une session est en cours. | ||
+ | |||
+ | <code twig> | ||
+ | {% if session.login %} | ||
+ | <a href="{{ url_for('logout') }}">Déconnexion</a> | ||
+ | {% else %} | ||
+ | <a href="{{ url_for('login') }}">Connexion</a> | ||
+ | {% endif %} | ||
+ | </code> | ||
+ | |||
+ | Le reste est accessible dans la variable **g**. | ||
+ | Par exemple : | ||
+ | |||
+ | <code twig> | ||
+ | {% if g.current_user %} | ||
+ | <p>Vous êtes connecté(e) en tant que {{ g.current_user.full_name }}.</p> | ||
+ | {% endif %} | ||
+ | </code> | ||
+ | |||
+ | ===== Hashage d'un mot de passe ===== | ||
+ | |||
+ | <code python> | ||
+ | from werkzeug.security import generate_password_hash | ||
+ | |||
+ | password_hash = generate_password_hash('mon_mot_de_passe') | ||
</code> | </code> | ||