Go में प्रमाणीकरण को सही तरीके से कैसे व्यवस्थित करें? (JWT, सत्र, middleware)
सभी को नमस्ते! मैं एक शुरुआती Go डेवलपर हूँ, अपना पहला REST API शुद्ध Go में (Gin या Echo जैसे फ्रेमवर्क के बिना) लिख रहा हूँ। प्रमाणीकरण के सवाल पर अटक गया हूँ। मैंने बहुत सारे लेख पढ़े, लेकिन हर जगह अलग-अलग दृष्टिकोण सुझाए गए हैं: कोई JWT का उपयोग करता है, कोई कुकीज़ के साथ सत्र का, कोई तीसरे पक्ष की सेवाओं के माध्यम से OAuth2 का। मैं पूरी तरह से भ्रमित हो गया हूँ।
मेरा कार्य: नोट्स के लिए एक सरल API बनाना। उपयोगकर्ता रजिस्टर करता है, लॉगिन करता है, टोकन प्राप्त करता है और फिर संरक्षित endpoints तक पहुँचने के लिए इसका उपयोग करता है। अभी तक मैंने handler में पासवर्ड जाँचने के लिए ऐसा प्रारंभिक कोड लिखा है:
```go
func loginHandler(w http.ResponseWriter, r *http.Request) {
// ... लॉगिन और पासवर्ड के साथ JSON पार्स करना
user, err := findUserByEmail(email)
if err != nil || !checkPasswordHash(password, user.Hash) {
http.Error(w, "अमान्य क्रेडेंशियल्स", http.StatusUnauthorized)
return
}
// ... यहाँ टोकन जनरेशन जोड़ना है
}
```
मैं समझता हूँ कि पासवर्ड को bcrypt से हैश करना चाहिए, लेकिन आगे क्या करना है यह स्पष्ट नहीं है। कृपया सलाह दें:
1. छोटे प्रोजेक्ट के लिए कौन सा दृष्टिकोण चुनना बेहतर है - JWT या सत्र?
2. Go में JWT के साथ काम करने के लिए कौन सी लाइब्रेरी सबसे अच्छी है?
3. middleware को सही तरीके से कैसे लिखें ताकि सभी संरक्षित routes में कोड डुप्लिकेट न हो?
4. क्या refresh tokens का उपयोग करना उचित है या छोटे API के लिए यह अत्यधिक है?
मैं वास्तविक जीवन के उदाहरणों और कोड स्निपेट्स के लिए आभारी रहूँगा। धन्यवाद!