我是Hapi.js的新手,正在使用“ hapi-auth-jwt2”模块进行身份验证令牌和角色验证。我设置了范围,并从validateFunc的回调中发送了该范围。它对于检查基于角色的身份验证非常有效。但是我想要我从validateFunc返回的结果,但是不知道我在哪里可以得到。
validateFunc: function (token, request, callback) {
Async.auto({
session: function (done) {
Session.findByCredentials(token.sessionId, token.sessionKey, done);
},
user: ['session', function (results, done) {
if (!results.session) {
return done();
}
User.findById(results.session.user, done);
}],
}, (err, results) => {
if (err) {
return callback(err);
}
if (!results.session) {
return callback(null, false);
}
results.scope = token.scope;
callback(null, Boolean(results.user), results);
});
}
});
};
`
它验证域中的范围或角色,即:
routeOptions: {
scope:{
createScope:"admin"
},
create: {
pre : function(payload, Log){
console.log("preee runnnig........");
console.log(payload);
}
}
我正在从客户端发送我正在获取的有效负载Json,但我想要从validateFunc回调中发送的结果,因为我想在发送请求之前在此使用该数据。我正在隐式创建通过Rest Hapi模块的API。
因此,如何从validateFunc的预钩中获取该数据。任何帮助深表感谢。
谢谢
最佳答案
这实际上是一项正在开发的功能,希望很快会完成。
现在,您可以omit the generated create endpoint和replace it with your own来访问请求对象。
结果代码如下所示:
'use strict';
const RestHapi = require('rest-hapi');
module.exports = function (server, mongoose, logger) {
server.route({
method: 'POST',
path: '/pathName',
config: {
handler: function(request, reply) {
/* modify request.payload here and access auth info through request.auth.credentials */
const Model = mongoose.model('modelName');
return RestHapi.create(Model, request.payload, logger)
.then(function (result) {
return reply(result);
})
.catch(function (error) {
return reply(error);
});
},
tags: ['api'],
plugins: {
'hapi-swagger': {}
}
}
});
};
关于node.js - 如何在自动创建的API Rest Hapi之前获取validateFunc的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44546596/