Swift Academy · पाठ

मिडलवेयर और प्रमाणीकरण

साझा तर्क जोड़िए और रूट को सुरक्षित कीजिए।

पाठ 4, कुल 4 में से13 चरण

मिडलवेयर और प्रमाणीकरण, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

मिडलवेयर क्या है

मिडलवेयर आने वाले अनुरोध और आपके रूट हैंडलर के बीच रहता है और अनुरोध तथा प्रतिक्रिया दोनों की जाँच या उनमें बदलाव कर सकता है। यह लॉग दर्ज करने, CORS, त्रुटि प्रबंधन और प्रमाणीकरण के लिए बहुत उपयोगी है।

import Vapor

मिडलवेयर प्रोटोकॉल

कस्टम मिडलवेयर AsyncMiddleware के अनुरूप होता है और respond(to:chainingTo:) लागू करता है। अपना काम करने के बाद श्रृंखला जारी रखने के लिए next.respond(to:) कॉल करें।

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)
    }
}

मिडलवेयर का वैश्विक पंजीकरण

प्रत्येक अनुरोध पर चलाने के लिए मिडलवेयर को app.middleware में जोड़ें। क्रम महत्वपूर्ण है—मिडलवेयर उसी क्रम में चलता है जिस क्रम में उसे जोड़ा गया है।

app.middleware.use(LogMiddleware())

अंतर्निहित मिडलवेयर

Vapor उपयोगी मिडलवेयर के साथ आता है: ErrorMiddleware फेंकी गई त्रुटियों को प्रतिक्रियाओं में बदलता है, FileMiddleware स्थिर फ़ाइलें उपलब्ध कराता है और CORSMiddleware क्रॉस-ओरिजिन अनुरोधों को संभालता है।

let cors = CORSMiddleware(configuration: .default())
app.middleware.use(cors)

रूट-विशिष्ट मिडलवेयर

मिडलवेयर के साथ समूह बनाकर उसे केवल कुछ रूट पर लागू करें। समूह के अंदर के रूट सुरक्षित होते हैं; बाकी रूट सुरक्षित नहीं होते।

let protected = app.grouped(LogMiddleware())
protected.get("dashboard") { req in "Secret dashboard" }

प्रमाणीकरण की अवधारणाएँ

Vapor की प्रमाणीकरण प्रणाली के दो भाग हैं: एक प्रमाणीकरण योग्य मॉडल (आपका उपयोगकर्ता) और एक प्रमाणक मिडलवेयर, जो प्रमाण-पत्रों की जाँच करके उपयोगकर्ता को अनुरोध में संग्रहीत करता है।

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() {}
}

बेसिक प्रमाणक लिखना

एक AsyncBasicAuthenticator HTTP Basic प्रमाणीकरण संभालता है। authenticate(basic:for:) लागू करें: उपयोगकर्ता खोजें, पासवर्ड सत्यापित करें और सफलता पर req.auth.login(user) कॉल करें।

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 से पासवर्ड हैश करना

सादे पासवर्ड कभी संग्रहीत न करें। Vapor साइनअप के समय हैश बनाने और लॉगिन के समय सत्यापन करने के लिए Bcrypt उपलब्ध कराता है। हैशिंग एक-तरफ़ा होती है; सत्यापन में दिए गए पासवर्ड की तुलना संग्रहीत हैश से की जाती है।

let hash = try Bcrypt.hash("s3cret")
let ok = try Bcrypt.verify("s3cret", created: hash) // true

गार्ड से रूट सुरक्षित करना

प्रमाणक को AppUser.guardMiddleware() के साथ मिलाएँ, जो बिना प्रमाणीकरण वाले अनुरोधों को 401 के साथ अस्वीकार करता है। सुरक्षित रूट को दोनों के पीछे समूहित करें।

let protected = app.grouped(
    UserAuthenticator(),
    AppUser.guardMiddleware()
)
protected.get("me") { req -> String in
    let user = try req.auth.require(AppUser.self)
    return user.username
}

प्रमाणित उपयोगकर्ता पढ़ना

सुरक्षित हैंडलर के भीतर, req.auth.require(_:) से लॉग-इन उपयोगकर्ता प्राप्त करें (उपयोगकर्ता न मिलने पर यह त्रुटि उत्पन्न करता है) या req.auth.get(_:) का उपयोग करें (वैकल्पिक)। इसी तरह आप डेटा का दायरा वर्तमान उपयोगकर्ता तक सीमित करते हैं।

app.get("profile") { req -> String in
    let user = try req.auth.require(AppUser.self)
    return "Hello, " + user.username
}

टोकन प्रमाणीकरण

एपीआई के लिए बियरर टोकन आम होते हैं। एक टोकन मॉडल ModelTokenAuthenticatable के अनुरूप होता है, जिससे वेपर Authorization: Bearer ... हेडर की पुष्टि कर सकता है और उससे संबद्ध उपयोगकर्ता को अपने-आप लोड कर सकता है।

let tokenProtected = app.grouped(
    UserToken.authenticator(),
    AppUser.guardMiddleware()
)

त्वरित जाँच: मिडलवेयर और प्रमाणीकरण

अपनी समझ की पुष्टि करें।

पुनरावलोकन: मिडलवेयर और प्रमाणीकरण

आपने अनुरोधों को बीच में रोकना और उन्हें सुरक्षित करना सीखा:

  • मिडलवेयर (AsyncMiddleware) अनुरोधों को लपेटता है; इसे वैश्विक रूप से या प्रति-रूट समूह के लिए पंजीकृत करें।
  • ErrorMiddleware और CORSMiddleware जैसे अंतर्निहित मिडलवेयर का उपयोग करें।
  • किसी उपयोगकर्ता को Authenticatable के अनुरूप बनाएँ, Authenticator लिखें और req.auth.login को कॉल करें।
  • Bcrypt से हैश करें, guardMiddleware() से रूट सुरक्षित करें और req.auth.require के माध्यम से उपयोगकर्ता पढ़ें।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “मिडलवेयर और प्रमाणीकरण” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “मिडलवेयर और प्रमाणीकरण” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“मिडलवेयर और प्रमाणीकरण” में मैं क्या सीखूँगा?

साझा तर्क जोड़िए और रूट को सुरक्षित कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“मिडलवेयर और प्रमाणीकरण” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. रूटिंग और अनुरोध सँभालना
  2. कंटेंट और JSON एन्कोडिंग
  3. Fluent ORM और मॉडल
  4. मिडलवेयर और प्रमाणीकरण
← Swift Academy पर वापस जाएँ