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.

  • Akzeptiere das GitHub Classroom Assignment
  • Klone dein persönliches Repository in die Entwicklungsumgebung

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)
  • 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 von UserMixin erbst.
  • Erstelle eine UserDao-Klasse um den User in die Datenbank zu speichern und daraus zu lesen.
  • 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))
  • 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
  • Erstelle Endpunkte für Login und Logout, 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

Via API-Testing.http-File im Workspace

oder via: Run in Postman

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

© Kevin Maurizi

  • modul/m323/learningunits/lu06/aufgaben/auth.txt
  • Last modified: 2023/11/13 08:56
  • by 127.0.0.1