هام: هذه المكتبة لا تتحقق من صحة الرمز المميز، ويمكن فك تشفير أي JWT جيد التكوين. يجب عليك التحقق من صحة الرمز المميز في منطق جانب الخادم الخاص بك باستخدام شيء مثل Express-jwt، وkoa-jwt، وMicrosoft.AspNetCore.Authentication.JwtBearer، وما إلى ذلك.
التوثيق - البدء - التعليقات
قم بالتثبيت باستخدام NPM أو الغزل.
قم بتشغيل npm install jwt-decode
أو yarn add jwt-decode
لتثبيت المكتبة.
import { jwtDecode } from "jwt-decode" ;
const token = "eyJ0eXAiO.../// jwt token" ;
const decoded = jwtDecode ( token ) ;
console . log ( decoded ) ;
/* prints:
* {
* foo: "bar",
* exp: 1393286893,
* iat: 1393268893
* }
*/
// decode header by passing in options (useful for when you need `kid` to verify a JWT):
const decodedHeader = jwtDecode ( token , { header : true } ) ;
console . log ( decodedHeader ) ;
/* prints:
* {
* typ: "JWT",
* alg: "HS256"
* }
*/
ملاحظة: سيؤدي الرمز المميز الزائف أو المشوه إلى ظهور خطأ InvalidTokenError
؛ انظر أدناه للحصول على مزيد من المعلومات حول أخطاء محددة.
تعتمد هذه المكتبة على atob()
، وهي وظيفة عامة متاحة في جميع المتصفحات الحديثة وكذلك في كل بيئة العقد المدعومة.
لاستخدام jwt-decode
في بيئة لا يمكنها الوصول إلى atob()
(على سبيل المثال React Native)، تأكد من توفير polyfill المقابل في تطبيقك باستخدام core-js/stable/atob
:
import "core-js/stable/atob" ;
بدلًا من ذلك، يمكنك أيضًا استخدام base-64
وpolyfill global.atob
بنفسك:
import { decode } from "base-64" ;
global . atob = decode ;
تعمل هذه المكتبة مع رموز ويب JSON الصالحة. التنسيق الأساسي لهذه الرموز المميزة هو
[part1].[part2].[part3]
من المفترض أن تكون جميع الأجزاء صالحة بترميز json باستخدام Base64 (url). اعتمادًا على خيار { header: <option> }
، سيتم فك تشفير الجزء 1 (فقط إذا تم تحديد الرأس: true) أو الجزء 2 (افتراضي)
سيؤدي عدم الالتزام بالتنسيق إلى ظهور خطأ InvalidTokenError
مع إحدى الرسائل التالية:
Invalid token specified: must be a string
=> الرمز المميز الذي تم تمريره لم يكن سلسلة، هذه المكتبة تعمل فقط على السلاسل.Invalid token specified: missing part #
=> ربما يعني هذا أنك تفتقد نقطة ( .
) في الرمز المميزInvalid token specified: invalid base64 for part #
=> لا يمكن فك ترميز الجزء باستخدام base64 (يجب أن تحتوي الرسالة على الخطأ الذي قدمه برنامج فك ترميز base64)Invalid token specified: invalid json for part #
=> تم فك تشفير الجزء بشكل صحيح باستخدام base64، ومع ذلك، فإن القيمة التي تم فك تشفيرها لم تكن صالحة JSON (يجب أن تحتوي الرسالة على الخطأ الذي قدمه محلل JSON) يتم تحديد نوع الإرجاع للدالة jwtDecode
بواسطة خاصية header
للكائن الذي تم تمريره كوسيطة ثانية. إذا تم حذفه (أو تعيينه على خطأ)، فسيستخدم JwtPayload
، وعندما يكون صحيحًا، سيستخدم JwtHeader
. إذا لزم الأمر، يمكنك تحديد نوع الإرجاع المتوقع عن طريق تمرير وسيطة النوع إلى الدالة jwtDecode
.
يمكنك توسيع كل من JwtHeader
و JwtPayload
ليشمل المطالبات أو الخصائص غير القياسية.
import { jwtDecode } from "jwt-decode" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode < JwtPayload > ( token ) ; // Returns with the JwtPayload type
const { jwtDecode } = require ( 'jwt-decode' ) ;
...
انسخ الملف jwt-decode.js
من جذر مجلد build/esm
إلى مشروعك في مكان ما، ثم قم باستيراد jwtDecode
منه داخل علامة البرنامج النصي المميزة بـ type="module"
:
< script type =" module " >
import { jwtDecode } from "/path/to/jwt-decode.js" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode ( token ) ;
</ script >
نحن نقدر ردود الفعل والمساهمة في هذا الريبو! قبل البدء، يرجى الاطلاع على ما يلي:
لتقديم تعليقات أو الإبلاغ عن خطأ، يرجى إثارة مشكلة على أداة تعقب المشكلات لدينا.
يرجى عدم الإبلاغ عن الثغرات الأمنية في متتبع مشكلات GitHub العام. يوضح برنامج الإفصاح المسؤول تفاصيل إجراءات الكشف عن المشكلات الأمنية.
Auth0 عبارة عن منصة مصادقة وترخيص سهلة التنفيذ وقابلة للتكيف. لمعرفة المزيد الخروج لماذا Auth0؟
هذا المشروع مرخص بموجب ترخيص MIT. راجع ملف الترخيص لمزيد من المعلومات.