1

我是 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 中获取数据预挂钩。任何帮助深表感谢。

谢谢

4

1 回答 1

0

这实际上是一个正在开发的功能,希望很快就会完成。

现在,您可以省略生成的创建端点并将其替换为您自己的端点以访问请求对象。

生成的代码如下所示:

'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': {}
        }
      }
    });
};
于 2017-06-15T20:13:52.183 回答