Ara Katman Yazılımı ve Kimlik Doğrulama
Kesişen mantık ekleyin ve yolları koruyun.
Ara Katman Yazılımı ve Kimlik Doğrulama, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
Ara Yazılım Nedir?
Ara yazılım, gelen istek ile yol işleyicinizin arasında yer alır ve hem isteği hem de yanıtı inceleyebilir veya değiştirebilir. Günlük kaydı, CORS, hata işleme ve kimlik doğrulama için idealdir.
import VaporAra Yazılım Protokolü
Özel bir ara yazılım AsyncMiddleware protokolüne uyar ve respond(to:chainingTo:) yöntemini uygular. İşlemlerinizi yaptıktan sonra zinciri sürdürmek için next.respond(to:) çağrısını yapın.
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)
}
}Ara Yazılımı Genel Olarak Kaydetme
Her istekte çalışması için ara yazılımı app.middleware içine ekleyin. Sıra önemlidir: ara yazılımlar eklendikleri sırayla çalışır.
app.middleware.use(LogMiddleware())Yerleşik Ara Yazılımlar
Vapor kullanışlı ara yazılımlarla birlikte gelir: ErrorMiddleware fırlatılan hataları yanıtlara dönüştürür, FileMiddleware statik dosyaları sunar ve CORSMiddleware farklı kaynaklardan gelen istekleri işler.
let cors = CORSMiddleware(configuration: .default())
app.middleware.use(cors)Yola Özgü Ara Yazılım
Ara yazılımı yalnızca bazı yollara uygulamak için onunla birlikte gruplama yapın. Grubun içindeki yollar korunur, diğerleri korunmaz.
let protected = app.grouped(LogMiddleware())
protected.get("dashboard") { req in "Secret dashboard" }Kimlik Doğrulama Kavramları
Vapor'ın kimlik doğrulama sistemi iki bölümden oluşur: bir kimlik doğrulanabilir model (kullanıcınız) ve kimlik bilgilerini doğrulayıp kullanıcıyı isteğe kaydeden bir kimlik doğrulayıcı ara yazılımı.
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() {}
}Temel Kimlik Doğrulayıcı Yazma
Bir AsyncBasicAuthenticator, HTTP Temel kimlik doğrulamasını işler. authenticate(basic:for:) yöntemini uygulayın: kullanıcıyı bulun, parolayı doğrulayın ve başarı durumunda req.auth.login(user) çağrısını yapın.
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)
}
}
}Bcrypt ile Parolaları Özetleme
Parolaları asla düz metin olarak saklamayın. Vapor, kayıt sırasında özetleme ve giriş sırasında doğrulama için Bcrypt ile birlikte gelir. Özetleme tek yönlüdür; doğrulama, aday parolayı depolanan özetle karşılaştırır.
let hash = try Bcrypt.hash("s3cret")
let ok = try Bcrypt.verify("s3cret", created: hash) // trueGuard ile Yolları Koruma
Kimlik doğrulayıcıyı, kimliği doğrulanmamış istekleri 401 ile reddeden AppUser.guardMiddleware() ile birleştirin. Korunan yolları her ikisinin arkasında gruplayın.
let protected = app.grouped(
UserAuthenticator(),
AppUser.guardMiddleware()
)
protected.get("me") { req -> String in
let user = try req.auth.require(AppUser.self)
return user.username
}Kimliği Doğrulanmış Kullanıcıyı Okuma
Korumalı bir işleyicinin içinde, oturum açmış kullanıcıyı req.auth.require(_:) (kullanıcı yoksa hata verir) veya req.auth.get(_:) (isteğe bağlı) ile alın. Verileri geçerli kullanıcıyla sınırlandırmanın yolu budur.
app.get("profile") { req -> String in
let user = try req.auth.require(AppUser.self)
return "Hello, " + user.username
}Belirteçle Kimlik Doğrulama
API'ler için taşıyıcı belirteçler yaygındır. Bir belirteç modeli ModelTokenAuthenticatable ile uyumlu olduğunda Vapor, Authorization: Bearer ... başlığını doğrulayabilir ve ilişkili kullanıcıyı otomatik olarak yükleyebilir.
let tokenProtected = app.grouped(
UserToken.authenticator(),
AppUser.guardMiddleware()
)Hızlı Kontrol: Ara Katman ve Kimlik Doğrulama
Anlayışınızı doğrulayın.
Özet: Ara Katman ve Kimlik Doğrulama
İstekleri yakalamayı ve güvenli hâle getirmeyi öğrendiniz:
- Ara katman (
AsyncMiddleware) istekleri sarar; genel olarak veya rota başına grup için kaydedilebilir. ErrorMiddlewareveCORSMiddlewaregibi yerleşik bileşenleri kullanın.- Bir kullanıcıyı
Authenticatableyapın, birAuthenticatoryazın vereq.auth.loginçağrısını yapın. Bcryptile özetleyin, rotalarıguardMiddleware()ile koruyun ve kullanıcıyıreq.auth.requirearacılığıyla okuyun.
Sıkça Sorulan Sorular
“Ara Katman Yazılımı ve Kimlik Doğrulama” dersi ücretsiz mi?
Evet — “Ara Katman Yazılımı ve Kimlik Doğrulama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“Ara Katman Yazılımı ve Kimlik Doğrulama” dersinde ne öğreneceğim?
Kesişen mantık ekleyin ve yolları koruyun. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Ara Katman Yazılımı ve Kimlik Doğrulama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Yönlendirme ve İstek İşleme
- İçerik ve JSON Kodlama
- Fluent ORM ve Modeller
- Ara Katman Yazılımı ve Kimlik Doğrulama