ВАЖНО: Эта библиотека не проверяет токен, любой правильно сформированный JWT может быть декодирован. Вам следует проверить токен в логике на стороне сервера, используя что-то вроде express-jwt, koa-jwt, Microsoft.AspNetCore.Authentication.JwtBearer и т. д.
Документация – Начало работы – Обратная связь
Установите с помощью NPM или Yarn.
Запустите 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), обязательно укажите соответствующий полифил в своем приложении, используя core-js/stable/atob
:
import "core-js/stable/atob" ;
Альтернативно вы также можете использовать base-64
и полифилл 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
объекта, переданного в качестве второго аргумента. Если этот параметр опущен (или установлен в значение false), он будет использовать JwtPayload
, если true — 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. Дополнительную информацию смотрите в файле ЛИЦЕНЗИИ.