Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
🔴 Advanced  ·  Lesson 38

JWT Authentication

JWT क्या है

JWT (JSON Web Token) APIs के लिए login संभालने का तरीका है। user के login के बाद, server एक signed token बनाता है और client को देता है। client यह token हर आगे की request के साथ भेजता है यह साबित करने को कि वो कौन है — तो server को हर user के लिए session store नहीं करना पड़ता।

💡 JWT signed है, encrypted नहीं। यह साबित करता है data बदला नहीं गया, पर कोई भी अंदर का पढ़ सकता है।

Token के तीन हिस्से

JWT xxxxx.yyyyy.zzzzz जैसा दिखता है — dots से अलग तीन हिस्से।

हिस्साक्या रखता है
Headersigning algorithm (जैसे HS256)
PayloadData — जैसे user id और expiry
Signatureजाँच कि token से छेड़छाड़ नहीं हुई

Header और payload बस base64-encoded हैं (पढ़ने योग्य), जबकि signature सिर्फ़ server को पता secret key इस्तेमाल करता है।

JWT login कैसे काम करता है

  1. User email और password से login करता है।
  2. Server उन्हें जाँचता है और, सही होने पर, signed JWT बनाता है।
  3. Client token store करता है और हर request के header में भेजता है।
  4. Server signature verify करता है और token से user id पढ़ता है।
  5. कोई server-side session नहीं चाहिए — token ही सबूत ले जाता है।

JWT library इस्तेमाल करना

JWTs हाथ से मत बनाइए — firebase/php-jwt जैसी भरोसेमंद library इस्तेमाल कीजिए।

<?php
  use Firebase\JWT\JWT;

  $key = "your-secret-key";
  $payload = ["user_id" => 5, "exp" => time() + 3600];
  $token = JWT::encode($payload, $key, "HS256");
  echo $token;   // xxxxx.yyyyy.zzzzz
?>

JWT::encode payload को आपकी secret key से sign करता है। exp field expiry set करता है (यहाँ एक घंटा), जिसके बाद token मान्य नहीं रहता।

Token verify करना

<?php
  use Firebase\JWT\JWT;
  use Firebase\JWT\Key;

  try {
      $decoded = JWT::decode($token, new Key($key, "HS256"));
      echo "User id: " . $decoded->user_id;
  } catch (Exception $e) {
      echo "Invalid or expired token";
  }
?>
User id: 5

हर protected request पर token decode और verify कीजिए। अगर signature गलत हो या expire हो गया हो, decoding error देता है और आप request ठुकरा देते हैं।

आम गलतियाँ

  • Payload में secrets डालना। यह पढ़ने योग्य है — passwords या sensitive data वहाँ कभी मत रखिए।
  • अपना JWT code लिखना। forgeable tokens बचाने को tested library इस्तेमाल कीजिए।
  • कोई expiry नहीं। हमेशा exp set कीजिए ताकि पुराने tokens काम करना बंद करें।
  • कमज़ोर या उजागर secret key। key मज़बूत रखिए और अपने code repository से बाहर।

सारांश

  • JWT token-based login है, stateless APIs के लिए आदर्श।
  • Token के तीन हिस्से: header, payload, signature।
  • यह signed (tamper-proof) है पर encrypted नहीं (पढ़ने योग्य)।
  • encode और verify को firebase/php-jwt जैसी library इस्तेमाल कीजिए।
  • हमेशा expiry set कीजिए और secret key सुरक्षित रखिए।

आगे, data layer सुरक्षित कीजिए prepared statements से, या तुलना कीजिए sessions और cookies से।

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

JWT क्या है?
JWT (JSON Web Token) एक signed string है जो user जानकारी ले जाता है। login के बाद server client को token देता है; client उसे हर request के साथ वापस भेजता है यह साबित करने को कि वो कौन है। यह APIs के लिए लोकप्रिय है क्योंकि server को sessions store नहीं करने पड़ते।
JWT के तीन हिस्से क्या हैं?
JWT में dots से अलग तीन हिस्से होते हैं: header (algorithm जानकारी), payload (data, जैसे user id), और signature (जाँच कि token से छेड़छाड़ नहीं हुई)। ये base64-encoded हैं, encrypted नहीं।
क्या JWT का data encrypted होता है?
नहीं। Payload सिर्फ़ base64-encoded है, तो कोई भी उसे पढ़ सकता है। JWT में passwords जैसे secrets कभी मत डालिए। signature सिर्फ़ साबित करता है token बदला नहीं गया, यह नहीं कि उसकी सामग्री छिपी है।
क्या मुझे अपना JWT code लिखना चाहिए?
नहीं। firebase/php-jwt जैसी भरोसेमंद library इस्तेमाल कीजिए। tokens सही sign और verify करना security-critical है, और अच्छी तरह tested library सूक्ष्म गलतियाँ बचाती है जो attackers को tokens forge करने दे सकती हैं।
JWT और sessions में क्या अंतर है?
Sessions login state server पर रखते हैं और cookie में session id भेजते हैं। JWT signed data client पर रखता है और पूरा token भेजता है। JWT stateless APIs के लिए, sessions पारंपरिक server-rendered sites के लिए।
← Back to PHP Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicMVC Architecture आपकी प्रगति: 38 / 50 (76%) · Lesson 39 / 50 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें