LU06.A05 - Authentifizierung für die ToDo-Liste API mit Flask-Login
Deine Aufgabe ist es, der bereits erstellten RESTful API für die ToDo-Liste eine Authentifizierungsfunktionalität hinzuzufügen. Dazu sollst du Flask-Login verwenden.
Vorgehen
0. Vorbereiten
- Akzeptiere das GitHub Classroom Assignment
- Klone dein persönliches Repository in die Entwicklungsumgebung
1. Integriere Flask-Login
Installiere Flask-Login
Füge Flask-Login >= 0.6.3
in deine requirements.txt Datei hinzu und installiere es.
Initialisiere Flask-Login in deiner Hauptanwendung
from flask_login import LoginManager login_manager = LoginManager() login_manager.init_app(app)
2. User-Klasse Erstellen
- Ergänze deine
User
-Klasse, um die Methoden und Eigenschaften, die von Flask-Login erwartet werden, zu implementieren. Du kannst dies tun, indem du deine Klasse vonUserMixin
erbst. - Erstelle eine
UserDao
-Klasse um den User in die Datenbank zu speichern und daraus zu lesen.
3. Implementiere die ''user_loader''-Funktion
- Erstelle eine Funktion, die die
user_loader
-Anforderungen erfüllt.
@login_manager.user_loader def load_user(user_id): return user_dao.get_user_by_id(int(user_id))
4. Schütze die ToDo-Endpunkte
- Füge dem
@login_required
-Dekorator zu deinen ToDo-Endpunkten hinzu, um sicherzustellen, dass nur authentifizierte Benutzer darauf zugreifen können.
from flask_login import login_required @app.route('/todos', methods=['GET']) @login_required def get_all_todos(): # Dein Code hier
5. Implementiere ''Login'' und ''Logout'' Endpunkte
- Erstelle Endpunkte für
Login
undLogout
, die die Methoden von Flask-Login verwenden.
from flask_login import login_user, logout_user @app.route('/login', methods=['POST']) def login(): # Dein Code hier @app.route('/logout', methods=['POST']) def logout(): # Dein Code hier
6. Teste deine API
7. Abgabe
Die Abgabe der Lösung erfolgt als Push in das persönliche GitHub-Repository.
⇒ GitHub Repo für externe Besucher
GitHub Repository https://github.com/templates-python/m323-lu06-a05-authentication
Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden