Jasonwebtokens (JWT) Как мы узнали в Аутентификация-с-Nodejs-and-mongodb-part-3 Позволяет нам создать случайный токен для зарегистрированного пользователя.
Этот токен состоит из пользовательских параметров, которые мы передали во время входа в систему, как у нас есть в этом фрагменте из статьи:
// create JWT token
const token = jwt.sign(
{
userId: user._id,
userEmail: user.email,
},
"RANDOM-TOKEN",
{ expiresIn: "24h" }
);
От фрагмента кода выше, мы прошли в Идентификатор пользователя и UserMail создать JWT. Когда токен создан, у нас есть строка, как мы находим на изображении ниже:
Декодировать токен
Иногда мы можем найти себя в ситуации, когда нам нужно получить детали, которые мы прошли, создавая этот токен. В этом случае нам нужно декодировать токен.
Предполагая, что вы получили токен, декодируйте токен после этих шагов:
- создать функцию, чтобы принять токен
// create a function to accept the token
function parseJwt(token) {
}
- В функции проверьте, действителен ли токен. Если недействительно, прекратите операцию с помощью
вернутьвот так:
function parseJwt(token) {
// terminate operation if token is invalid
if (!token) {
return;
}
}
- Разделить токен и взять вторую; Передайте его в постоянную
(Base64URL)вот так:
function parseJwt(token) {
// terminate operation if token is invalid
if (!token) {
return;
}
// Split the token and taken the second
const base64Url = token.split(".")[1];
}
- Заменить
-с+;_с/вBase64URLпостоянна и назначьте его новую константу, как так
function parseJwt(token) {
// terminate operation if token is invalid
if (!token) {
return;
}
// Split the token and taken the second
const base64Url = token.split(".")[1];
// Replace "-" with "+"; "_" with "/"
const base64 = base64Url.replace("-", "+").replace("_", "/");
}
- Наконец, верните результат, проанализированный в JSON, например,
function parseJwt(token) {
// terminate operation if token is invalid
if (!token) {
return;
}
// Split the token and taken the second
const base64Url = token.split(".")[1];
// Replace "-" with "+"; "_" with "/"
const base64 = base64Url.replace("-", "+").replace("_", "/");
}
// return the result parsed in JSON
return JSON.parse(window.atob(base64));
- Теперь вы можете просто позвонить в функцию и пройти в токене по вашему выбору, подобное:
// loggedin user const user = parseJwt(token)
Окончательный код
// decode the logged in user
function parseJwt(token) {
if (!token) {
return;
}
const base64Url = token.split(".")[1];
const base64 = base64Url.replace("-", "+").replace("_", "/");
return JSON.parse(window.atob(base64));
}
// loggedin user
const user = parseJwt(token)
Вывод
Так же, как JWT дает нам способ кодировать данные и сделать нашу систему обеспеченную системой AD надежным, у нас также есть способ расширить его. Этот учебник, несомненно, показал нам шаг за шагом, как это работает и как мы можем достичь этого.
Спасибо за чтение.
Оригинал: “https://dev.to/ebereplenty/decoding-jasonwebtokens-on-the-frontend-4gpm”