Go में प्रमाणीकरण को सही तरीके से कैसे व्यवस्थित करें? (JWT, सत्र, middleware)
सभी को नमस्कार! मैं एक शुरुआती Go डेवलपर हूं, अपना पहला REST API शुद्ध Go में (Gin या Echo जैसे फ्रेमवर्क के बिना) लिख रहा हूं। प्रमाणीकरण के सवाल पर अटक गया हूं। बहुत सारे लेख पढ़े, लेकिन हर जगह अलग-अलग दृष्टिकोण सुझाए गए हैं: कोई JWT का उपयोग करता है, कोई कुकीज़ के साथ सत्र का, कोई तीसरे पक्ष की सेवाओं के माध्यम से OAuth2 का। मैं पूरी तरह से भ्रमित हो गया हूं।
मेरा काम: नोट्स के लिए एक सरल API बनाना है। उपयोगकर्ता रजिस्टर करता है, लॉगिन करता है, token प्राप्त करता है और फिर संरक्षित 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
}
// ... यहां मुझे token बनाना है
}
```
मैं समझता हूं कि मुझे middleware की आवश्यकता है, लेकिन मुझे समझ नहीं आ रहा कि कैसे शुरू करूं। कृपया सलाह दें:
1. क्या JWT या सत्र बेहतर है? (हम मानते हैं कि केवल एक REST API है, कोई frontend नहीं)
2. Go में JWT के साथ काम करने के लिए कौन सी लाइब्रेरी सबसे अच्छी है?
3. middleware को सही तरीके से कैसे लिखें ताकि सभी संरक्षित routes पर token की जांच हो?
4. क्या मुझे refresh tokens का उपयोग करना चाहिए या केवल access tokens पर्याप्त हैं?
यदि कोई सरल उदाहरण दे सके तो बहुत आभारी रहूंगा। धन्यवाद!