如何在自动创建的 API Rest Hapi 之前获取 validateFunc 的结果
Posted
技术标签:
【中文标题】如何在自动创建的 API Rest Hapi 之前获取 validateFunc 的结果【英文标题】:How to get result of validateFunc in pre of auto created API Rest Hapi 【发布时间】:2017-11-16 17:07:27 【问题描述】:我是 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 中获取数据预挂钩。非常感谢任何帮助。
谢谢
【问题讨论】:
【参考方案1】:这实际上是一个正在开发的功能,希望很快就会完成。
目前,您可以通过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':
);
;
【讨论】:
以上是关于如何在自动创建的 API Rest Hapi 之前获取 validateFunc 的结果的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose 自定义类型在 hapi / rest-hapi 中导致 500 内部服务器错误
如何在使用 PayPal rest API 执行付款之前更改运费