我想用JSON Web令牌驗證Node.js API。我可以生成令牌認證用戶。現在我需要根據用戶角色來檢測我的API。 這是我如何路由中間件來驗證和檢查令牌。基於角色的jwt授權
var app = express();
var apiRoutes = express.Router();
apiRoutes.use(function (req, res, next) {
var token = req.body.token || req.param('token') || req.headers['x-access-token'];
if (token) {
jwt.verify(token, app.get('superSecret'), function (err, decoded) {
if (err) {
return res.json({ success: false, message: 'Failed to authenticate token.' });
} else {
req.decoded = decoded;
next();
}
});
} else {
return res.status(403).send({
success: false,
message: 'No token provided.'
});
}
});
apiRoutes.get('/check', function (req, res) {
//...
});
app.use('/api', apiRoutes);
這樣,我保護API說/api/check
。這僅可通過admin user
訪問。現在我有另一個super user
誰可以訪問/api/validate
哪些admin user
無法訪問。如何僅爲super user
保護/api/validate
。我需要再寫一箇中間件來做到這一點嗎?
這裏是我現在該怎麼辦的管理檢查,
apiRoutes.post('/delete/:id',requireAdmin, function (req, res) {
//do the rest
};
function requireAdmin(req, res, next) {
var currentUserRole=".."; //get current user role
if('admin' == currentUserRole)
{
next();
}
else{
next(new Error("Permission denied."));
return;
}
};
同樣requireSuperUser
功能超級用戶check.Is這個做管理員/超級用戶檢查的正確方法?