Nodejs Express JWT, как обрабатывать и отправлять токен с веб-клиента/телефона (jsonwebtoken)
0 Noark [2019-01-29 11:44:00]
Я использую NodeJs с приложением Express для разработки веб-сайтов для браузеров и мобильных телефонов. Я использую JWT, потому что он, кажется, является стандартом, и я прочитал, что сессии не работают в телефонах (без браузера). У меня есть этот код в бэкэнде, настроенном с помощью "jsonwebtoken":
'use strict';
const jwt = require('jsonwebtoken');
const path = require('path');
const fs = require('fs');
const privateKEY = fs.readFileSync(path.join(__dirname, 'private.key'), 'utf8');
const publicKEY = fs.readFileSync(path.join(__dirname, 'public.key'), 'utf8');
module.exports = {
sign: (payload) => {
var signOptions = {
expiresIn: process.env.TOKEN_EXPIRE_TIME,
algorithm: "RS256"
};
return jwt.sign(payload, privateKEY, signOptions);
},
verify: (token) => {
var verifyOptions = {
expiresIn: process.env.TOKEN_EXPIRE_TIME,
algorithm: ["RS256"]
};
try {
return jwt.verify(token, publicKEY, verifyOptions);
} catch (err) {
return false;
}
},
decode: (token) => {
return jwt.decode(token, {
complete: true
});
}
};
Но я не знаю, какой способ реализовать переднюю часть. Мне нужно знать, как хранить токен для обоих устройств (localStorage? SessionStorage? Куки? Другие?), И что может быть хорошим способом сделать ссылки (тег href в html), отправляющие токен из этого метода хранения.
node.js express jwt
1 ответ
0 Rahul Yadav [2019-01-29 12:37:00]
Тип хранилища для токена JWT во внешнем интерфейсе полностью зависит от требований ваших приложений и от того, как вы хотите обрабатывать сеанс входа/выхода пользователя из системы.
Смотрите эту статью об использовании JWT, хлопайте, если хотите
Если вы не уверены в этом, вы можете использовать localStorage, так как данные, хранящиеся в нем, остаются событиями после закрытия браузера - если это не мешает вашим требованиям.
Для отправки токена по ссылке вы можете сделать две вещи:
- Динамически создайте ссылку и добавьте токен в качестве параметра запроса к вашей ссылке.
- Или вы можете создать событие onClick, которое извлекает токен из хранилища и запускает запрос на ваш сервер.
Надеюсь, это поможет.