0Pricing
Swift Academy · Ders

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 Vapor

Ara 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) // true

Guard 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.
  • ErrorMiddleware ve CORSMiddleware gibi yerleşik bileşenleri kullanın.
  • Bir kullanıcıyı Authenticatable yapın, bir Authenticator yazın ve req.auth.login çağrısını yapın.
  • Bcrypt ile özetleyin, rotaları guardMiddleware() ile koruyun ve kullanıcıyı req.auth.require aracı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

  1. Yönlendirme ve İstek İşleme
  2. İçerik ve JSON Kodlama
  3. Fluent ORM ve Modeller
  4. Ara Katman Yazılımı ve Kimlik Doğrulama
← Swift Academy Sayfasına Dön