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, так как данные, хранящиеся в нем, остаются событиями после закрытия браузера - если это не мешает вашим требованиям.

Для отправки токена по ссылке вы можете сделать две вещи:

  1. Динамически создайте ссылку и добавьте токен в качестве параметра запроса к вашей ссылке.
  2. Или вы можете создать событие onClick, которое извлекает токен из хранилища и запускает запрос на ваш сервер.

Надеюсь, это поможет.