В качестве упражнения по изучению NodeJS я создаю своего рода API с ExpressJS, который отвечает на веб-запросы. На данный момент в программе есть три маршрута: «/ login», «/ register» и «/ changePassword». Все эти методы не требуют какого-либо токена для обработки.
Однако любой другой маршрут, который я планирую добавить в программу (например, маршрут «/ post»), потребует от пользователя аутентификации с помощью токена, полученного из запроса POST для «/ login» с правильным полномочия.
Чтобы проверить токен, я написал функцию промежуточного программного обеспечения:
module.exports.validateToken = function (req,res,next) {
const token = req.headers['x-access-token']
console.log(`validateToken() - TOKEN: ${token}`)
if (token) {
//Make sure the token is valid[...]
next()
}else {
return res.status(401).send({
message: 'Missing token',
success: false
})
}
}
У меня вопрос: как применить это промежуточное ПО только к тем маршрутам, которые требуют аутентификации?
Я думал просто создать еще один объект Router и назвать его так:
const tokenValidator = require('./util').validate.validateToken
// Router used for any actions that require user-authentication
const authRouter = new app.Router()
authRouter.use(tokenValidator)
Но не помешает ли это вообще моим исходным маршрутам без аутентификации?
// Initiate the routes that don't need auth
const routes = require('./routes')(app)
Заранее спасибо, я в большей степени Java-разработчик, поэтому многие причуды Javascript оставили меня в тупике.