Express 基于Auth0作用域授权FeatherJS服务
我在feathers.js API中有一个用户服务。我想使find方法仅对已读取:users范围集的经过身份验证的用户可用 我使用Express 基于Auth0作用域授权FeatherJS服务,express,auth0,feathersjs,Express,Auth0,Feathersjs,我在feathers.js API中有一个用户服务。我想使find方法仅对已读取:users范围集的经过身份验证的用户可用 我使用expressjwt作为身份验证的中间件。 我已经尝试使用express jwt authz进行授权,但我不能,因为req在钩子中不可用快速jwt库在req.user中设置范围 用法JWT身份验证中间件使用 JWT。如果令牌有效,将使用JSON对象设置req.user 解码后供以后的中间件用于授权和访问 控制 有没有一种方法可以访问钩子中access_令牌中的作用域
expressjwt
作为身份验证的中间件。
我已经尝试使用express jwt authz
进行授权,但我不能,因为req
在钩子中不可用<代码>快速jwt库在req.user中设置范围
用法JWT身份验证中间件使用
JWT。如果令牌有效,将使用JSON对象设置req.user
解码后供以后的中间件用于授权和访问
控制
有没有一种方法可以访问钩子中access_令牌中的作用域
我希望能够做到以下几点:
module.exports = {
before: {
all: [],
find: [ authorize(['read:users']) ],
get: [ authorize(['read:users'])],
create: [ authorize(['write:users']) ],
update: [ authorize(['write:users']) ],
patch: [ authorize(['write:users']) ],
remove: [ authorize(['write:users']) ]
}
};
通过添加一个中间件来解决这个问题,该中间件将req.user数据添加到req.scope 我的
src/middleware/index.js
文件
const addUserToReq = function(req, res, next) {
req.feathers.user = req.user; next();
};
module.exports = function (app) {
app.use(checkJwt); // express-jwt logic
app.use(addUserToReq);
};
然后在钩子里我可以像这样访问这些信息
module.exports = function(expectedScopes) {
return context => {
let scopes = context.params.user.scope;
}
};
};