Middleware und Authentifizierung
Fügen Sie übergreifende Logik hinzu und schützen Sie Routen.
Middleware und Authentifizierung ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist Middleware?
Middleware befindet sich zwischen der eingehenden Anfrage und Ihrem Routen-Handler und kann sowohl die Anfrage als auch die Antwort prüfen oder ändern. Sie eignet sich besonders für Logging, CORS, Fehlerbehandlung und Authentifizierung.
import VaporDas Middleware-Protokoll
Eine benutzerdefinierte Middleware entspricht dem Protokoll AsyncMiddleware und implementiert respond(to:chainingTo:). Führen Sie Ihre Verarbeitung durch und rufen Sie anschließend next.respond(to:) auf, um die Kette fortzusetzen.
struct LogMiddleware: AsyncMiddleware {
func respond(to req: Request, chainingTo next: AsyncResponder) async throws -> Response {
req.logger.info("Incoming: " + req.url.path)
return try await next.respond(to: req)
}
}Middleware global registrieren
Fügen Sie eine Middleware zu app.middleware hinzu, damit sie bei jeder Anfrage ausgeführt wird. Die Reihenfolge ist wichtig – die Middleware wird in der Reihenfolge ihrer Hinzufügung ausgeführt.
app.middleware.use(LogMiddleware())Integrierte Middleware
Vapor enthält nützliche Middleware: ErrorMiddleware wandelt ausgelöste Fehler in Antworten um, FileMiddleware stellt statische Dateien bereit und CORSMiddleware verarbeitet Cross-Origin-Anfragen.
let cors = CORSMiddleware(configuration: .default())
app.middleware.use(cors)Routenspezifische Middleware
Wenden Sie Middleware nur auf bestimmte Routen an, indem Sie diese mit der Middleware gruppieren. Die Routen innerhalb der Gruppe sind geschützt, die übrigen nicht.
let protected = app.grouped(LogMiddleware())
protected.get("dashboard") { req in "Secret dashboard" }Konzepte der Authentifizierung
Das Authentifizierungssystem von Vapor besteht aus zwei Teilen: einem Authenticatable-Modell (Ihrem Benutzer) und einer Authenticator-Middleware, die Anmeldedaten überprüft und den Benutzer in der Anfrage speichert.
final class AppUser: Model, Content, Authenticatable {
static let schema = "users"
@ID(key: .id) var id: UUID?
@Field(key: "username") var username: String
@Field(key: "password_hash") var passwordHash: String
init() {}
}Einen Basic Authenticator schreiben
Ein AsyncBasicAuthenticator verarbeitet die HTTP-Basic-Authentifizierung. Implementieren Sie authenticate(basic:for:): Suchen Sie den Benutzer, überprüfen Sie das Passwort und rufen Sie bei Erfolg req.auth.login(user) auf.
struct UserAuthenticator: AsyncBasicAuthenticator {
func authenticate(basic: BasicAuthorization, for req: Request) async throws {
guard let user = try await AppUser.query(on: req.db)
.filter(\.$username == basic.username).first() else { return }
if try Bcrypt.verify(basic.password, created: user.passwordHash) {
req.auth.login(user)
}
}
}Passwörter mit Bcrypt hashen
Speichern Sie niemals Passwörter im Klartext. Vapor enthält Bcrypt, um Passwörter bei der Registrierung zu hashen und bei der Anmeldung zu überprüfen. Hashing ist eine Einwegoperation; bei der Überprüfung wird ein Kandidat mit dem gespeicherten Hash verglichen.
let hash = try Bcrypt.hash("s3cret")
let ok = try Bcrypt.verify("s3cret", created: hash) // trueRouten mit einem Guard schützen
Kombinieren Sie den Authenticator mit AppUser.guardMiddleware(), der nicht authentifizierte Anfragen mit 401 zurückweist. Gruppieren Sie geschützte Routen hinter beiden Komponenten.
let protected = app.grouped(
UserAuthenticator(),
AppUser.guardMiddleware()
)
protected.get("me") { req -> String in
let user = try req.auth.require(AppUser.self)
return user.username
}Authentifizierten Benutzer auslesen
Rufen Sie innerhalb eines geschützten Handlers den angemeldeten Benutzer mit req.auth.require(_:) ab (wirft einen Fehler, wenn er nicht vorhanden ist) oder mit req.auth.get(_:) (optional). So können Sie Daten auf den aktuellen Benutzer beschränken.
app.get("profile") { req -> String in
let user = try req.auth.require(AppUser.self)
return "Hello, " + user.username
}Token-Authentifizierung
Für APIs sind Bearer-Tokens üblich. Ein Token-Modell entspricht ModelTokenAuthenticatable. Dadurch kann Vapor einen Authorization: Bearer ...-Header überprüfen und den zugehörigen Benutzer automatisch laden.
let tokenProtected = app.grouped(
UserToken.authenticator(),
AppUser.guardMiddleware()
)Kurzer Check: Middleware und Authentifizierung
Überprüfen Sie Ihr Verständnis.
Zusammenfassung: Middleware und Authentifizierung
Sie haben gelernt, Anfragen abzufangen und abzusichern:
- Middleware (
AsyncMiddleware) umschließt Anfragen. Sie kann global oder für eine Route-Gruppe registriert werden. - Verwenden Sie integrierte Middleware wie
ErrorMiddlewareundCORSMiddleware. - Machen Sie einen Benutzer
Authenticatable, schreiben Sie einenAuthenticatorund rufen Siereq.auth.loginauf. - Hashen Sie Passwörter mit
Bcrypt, schützen Sie Routen mitguardMiddleware()und lesen Sie den Benutzer überreq.auth.requireaus.
Häufig gestellte Fragen
Ist die Lektion „Middleware und Authentifizierung“ kostenlos?
Ja — der vollständige Text von „Middleware und Authentifizierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Middleware und Authentifizierung“?
Fügen Sie übergreifende Logik hinzu und schützen Sie Routen. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Middleware und Authentifizierung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Routing und Request-Verarbeitung
- Content- und JSON-Codierung
- Fluent ORM und Models
- Middleware und Authentifizierung