PENTING: Pustaka ini tidak memvalidasi token, JWT apa pun yang dibuat dengan baik dapat didekodekan. Anda harus memvalidasi token dalam logika sisi server dengan menggunakan sesuatu seperti express-jwt, koa-jwt, Microsoft.AspNetCore.Authentication.JwtBearer, dll.
Dokumentasi - Memulai - Umpan Balik
Instal dengan NPM atau Yarn.
Jalankan npm install jwt-decode
atau yarn add jwt-decode
untuk menginstal perpustakaan.
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"
* }
*/
Catatan: Token yang salah atau formatnya salah akan menimbulkan kesalahan InvalidTokenError
; lihat di bawah untuk informasi lebih lanjut tentang kesalahan tertentu.
Pustaka ini mengandalkan atob()
, yang merupakan fungsi global yang tersedia di semua browser modern serta setiap lingkungan node yang didukung.
Untuk menggunakan jwt-decode
di lingkungan yang tidak memiliki akses ke atob()
(misalnya React Native), pastikan untuk menyediakan polyfill yang sesuai di aplikasi Anda dengan menggunakan core-js/stable/atob
:
import "core-js/stable/atob" ;
Alternatifnya, Anda juga dapat menggunakan base-64
dan polyfill global.atob
sendiri:
import { decode } from "base-64" ;
global . atob = decode ;
Pustaka ini berfungsi dengan token web JSON yang valid. Format dasar token ini adalah
[part1].[part2].[part3]
Semua bagian seharusnya berupa json yang dikodekan base64 (url) yang valid. Bergantung pada opsi { header: <option> }
ia akan mendekode bagian 1 (hanya jika header: true ditentukan) atau bagian 2 (default)
Tidak mengikuti format akan mengakibatkan InvalidTokenError
dengan salah satu pesan berikut:
Invalid token specified: must be a string
=> token yang diteruskan bukan string, perpustakaan ini hanya berfungsi pada string.Invalid token specified: missing part #
ini mungkin berarti Anda kehilangan satu titik ( .
) di tokenInvalid token specified: invalid base64 for part #
=> bagian tersebut tidak dapat didekodekan base64 (pesan harus berisi kesalahan yang diberikan dekoder base64)Invalid token specified: invalid json for part #
=> bagian tersebut didekodekan dengan benar base64, namun, nilai yang didekodekan bukan JSON yang valid (pesan harus berisi kesalahan yang diberikan parser JSON) Tipe kembalian fungsi jwtDecode
ditentukan oleh properti header
dari objek yang diteruskan sebagai argumen kedua. Jika dihilangkan (atau disetel ke false), maka akan menggunakan JwtPayload
, jika benar maka akan menggunakan JwtHeader
. Jika diperlukan, Anda dapat menentukan tipe pengembalian yang diharapkan dengan meneruskan argumen tipe ke fungsi jwtDecode
.
Anda dapat memperluas JwtHeader
dan JwtPayload
untuk menyertakan klaim atau properti non-standar.
import { jwtDecode } from "jwt-decode" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode < JwtPayload > ( token ) ; // Returns with the JwtPayload type
const { jwtDecode } = require ( 'jwt-decode' ) ;
...
Salin file jwt-decode.js
dari akar folder build/esm
ke proyek Anda di suatu tempat, lalu impor jwtDecode
dari file tersebut di dalam tag skrip yang ditandai dengan type="module"
:
< script type =" module " >
import { jwtDecode } from "/path/to/jwt-decode.js" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode ( token ) ;
</ script >
Kami menghargai masukan dan kontribusi pada repo ini! Sebelum Anda memulai, silakan lihat yang berikut ini:
Untuk memberikan masukan atau melaporkan bug, silakan ajukan masalah di pelacak masalah kami.
Harap jangan laporkan kerentanan keamanan pada pelacak masalah GitHub publik. Program Pengungkapan yang Bertanggung Jawab merinci prosedur untuk mengungkapkan masalah keamanan.
Auth0 adalah platform autentikasi dan otorisasi yang mudah diterapkan dan mudah beradaptasi. Untuk mempelajari lebih lanjut, periksa Mengapa Auth0?
Proyek ini dilisensikan di bawah lisensi MIT. Lihat file LISENSI untuk info lebih lanjut.