我正在尝试使用JWT保护回送API,但我需要为每个端点和每个CRUD操作赋予不同的权限级别。假设API使用者将已经获得有效的令牌,并且可以按访问级别(即只读或管理员)具有令牌。
目前,我已通过中间件获得了有效JWT的授权,但我只将此方法用于所有或仅一个端点。 有没有一种方法可以使不同的JWT对不同的端点和CRUD操作具有不同的访问级别?
我已经在middleware.json中注册了一个auth.js文件:
"auth": {
"./middleware/auth.js": {
"paths": [
"${restApiRoot}"
]
}
}
这是正在检查JSON Web令牌的auth.js文件:
'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();
});
};
};