Как упростить получение токена аутентификации каждый раз перед выполнением запроса API в Node.js (Express.js)?

#javascript #node.js #express #jwt #authorization

Вопрос:

Моя служба должна отвечать на запросы о получении от пользовательского интерфейса. Я получаю данные от третьей стороны, где требуется аутентификация. Так что теперь это моя логика:

Интерфейс делает запрос get, В моем методе get я сначала делаю пост-вызов, чтобы получить токен аутентификации, затем, используя этот токен, я делаю запрос get той же третьей стороне и отправляю полученные данные в пользовательский интерфейс. Мне не нравится делать post-вызов, чтобы получить токен для каждого запроса на получение из пользовательского интерфейса. Как я могу это упростить ?

Логические:

 app.get('/index', (req, res) => {
    
// 1) I make async post call to get token to the 3rd party

// 2) Using this token,I make get call to the same 3rd party

// 3) send the response

})
 

Комментарии:

1. Вы можете написать node.js промежуточное программное обеспечение, которое будет предоставлять вам данные аутентификации каждый раз, если ваша третья сторона позволяет вам хранить токен, вы можете кэшировать его локально на своем веб-сервере и повторно использовать.

Ответ №1:

Цитирование из документации. Если вы используете экспресс, это может вам помочь:

 var express = require('express')
var app = express()

var getToken = function (req, res, next) {
  // code for getting token
  req.authToken = 'HASHED TOKEN';
  next()
}

app.use(getToken)

app.get('/index', function (req, res) {
let authToken = req.authToken;

// 2) Use this token for getting the data

// 3) send the response
  res.send(response)
})

app.listen(3000)