Я пытаюсь защитить петлевой API с помощью JWT, но мне нужно предоставить разные уровни разрешений для конечной точки и для операции CRUD.Предполагается, что потребитель API уже получит действительный токен и может иметь токен для уровня доступа, то есть только для чтения или для администратора.
В настоящее время у меня есть авторизация действительного JWT через промежуточное ПО, но у меня есть только это, чтобы работать для всех или только для одной конечной точки.Есть ли способ дать разные JWT разные уровни доступа к разным конечным точкам и операциям CRUD?
Я зарегистрировал файл auth.js в middleware.json:
"auth": {
"./middleware/auth.js": {
"paths": [
"${restApiRoot}"
]
}
}
Этофайл auth.js, проверяющий веб-токен JSON:
'use strict';
const jwt = require('jsonwebtoken');
const config = require('../config.json');
module.exports = function() {
return function(req, res, next) {
function fromHeaderOrQueryString(req) {
if (req.headers &&
req.headers.authorization &&
req.headers.authorization.split(' ')[0] === 'Bearer') {
return req.headers.authorization.split(' ')[1];
} else if (req.query && req.query.access_token) {
return req.query.access_token;
}
return null;
};
var token = fromHeaderOrQueryString(req);
if (!token)
return res.status(400).send({auth: false, message: 'No token provided.'});
jwt.verify(token, config.secret, function(err, decoded) {
if (err)
return res.status(401).send({
auth: false,
message: 'Failed to authenticate token.',
});
req.userId = decoded.id;
next();
});
};
};