Использование JWT с nodejs и express - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь добавить JWT вместо express -сессии в бэкэнде. Я не могу понять, как использовать его с nodejs + маршрутами.

Я попробовал это, поэтому я смогу использовать его на каждом маршруте:

const jwt = 'jsonwebtoken'
app.use(jwt())

и я получил, что "JWT не является функцией".

, чем я пытался это:

app.use(
  jwt.sign({}, 'secret')
);

, и я получил, что "app.use () требует функции промежуточного программного обеспечения" и вместо { } Я хотел бы ввести пользователя, когда веб-интерфейс пройдет его.

я должен создать файл jwtService и импортировать его на каждый маршрут, использующий jwt? или требуется jsonwebtoken в каждом маршруте?

Ответы [ 2 ]

2 голосов
/ 13 января 2020

Убедитесь, что вы установили пакет, и вам нужно сначала импортировать / потребовать его.

const jwt =require('jsonwebtoken');
1 голос
/ 13 января 2020

Способ реализации этих библиотек всегда будет варьироваться в зависимости от стандарта проекта.

Я постараюсь немного упростить здесь, чтобы сделать его как можно проще.

Давайте Предположим, у вас есть маршрут /login.

const express = require('express')
const bodyParser = require('body-parser')
const cookieParser = require('cookie-parser')

const app = express();
app.use(bodyParser.json());
app.use(cookieParser());

app.post('/login', loginHandler); // YOUR route with JWT inside of login funciton.

app.listen(3000);

Вторым параметром app.post будет функция, содержащая ваши обработчики JWT, например:

const loginHandler = (req, res) => {
  // username and password
  const { username, password } = req.body

  // create new token
  const myJwtToken = jwt.sign({ username }, 
   jwtKey, {
    algorithm: 'HS256',
    expiresIn: XXSeconds // The expiredIn property can be human readable like '6 months', '1 week', etc.
  });

  console.log('My token is: ', myJwtToken);

  // set token and expiry date
  res.cookie('token', myJwtToken, { maxAge: XXSeconds * 1000 });
  res.end();
}

Полезные ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...