Я пытаюсь написать API, некоторые из которых имеют авторизацию на основе ролей. Далее я использую JWT для аутентификации для моих API.
Ниже приведен код, который я пытаюсь написать. Однако, когда я нажимаю конечную точку «/ user /: email», функция авторизации не вызывается. Всегда вызывается функция getUser . Я предполагал, что сначала нужно вызвать функцию авторизации, а затем getUser .
Может кто-нибудь объяснить мне, почему функция authorize не вызывается, когда я нажимаю на конечную точку "/ user /: email"? Что я здесь не так делаю? И как я могу правильно справиться с этим сценарием?
var express = require('express')
var router = express.Router();
var expressJwt = require('express-jwt');
var authorize = function(role){
expressJwt({secret:'secretKey'}, (req, res, next) =>{
console.log('req.role is', req.role);
if(req.role === role){
next();
}else{
res.status(403).send({message: 'Unauthorized'});
}
})
}
var getUser = function(req,res,next){
res.status(200).send("Hello user");
}
router.get('/user/:email', authorize('Admin'), getUser);