2017-10-04 10 views
0

私のアプリでベアラトークンを有効にするためにhapi-auth-bearer-simpleモジュールを使用しようとしています。しかし、タイトルにエラーが表示されています。未知の認証戦略:hapi-auth-bearer-simple

私は私のアプリでトークン認証を有効にするには、このモジュールを実装しようとしています。しかし、私は、私は、ルートファイル

module.exports = [ 
    { 
     method: 'GET', 
     path: '/api/{_id?}', 
     handler: function (request, reply) { 
      Controller.control.get(request.params, function (err, success) { 
       console.log(request.params); 
       if (err) { 
        reply(unifunc.sendError(err)); 
       } else { 
        reply(unifunc.sendSuccess(SuccessMsg,success)).code(200); 
       } 
      }); 
     }, 
     config: { 
      description: 'desc', 
      tags: ['api', 'oV'], 
      validate: { 
       headers: unifunc.authorizationHeaderObj, 
       params: { 
        o_id: Joi.string().required().trim(), 
        _id: Joi.string().optional().trim() 
       }, 
       failAction: unifunc.failActionFunction 
      }, 
      auth: { 
       strategy: 'bearer', 
       scope: ['admin', 'user-{params.id}'] 
       }, 
      plugins: { 
       'hapi-swagger': { 
        responseMessages: msgs 
       }](url) 

とコントローラファイルを持っている

e:\python_training\Training\Node\Test\Project\Backend\node_modules\hapi\node_modules\hoek\lib\index.js:723

の下に言及したエラーを取得しています私が戦略を挙げたのは

var bearerSimple= require('hapi-auth-bearer-simple') 
authorization = Authorization.auth; // This plugin has the logic to validate the token and return the error in case it fails and I am passing accesstoken as parameter in a function in that file 
var getV = function(server, params, callbackRoute){ 
    server.register(
     [{ 
      register: bearerSimple 
     }], function(err){ 
    if(err){ 
     console.log("Failed to log the plugin",err); 
     throw err; 
    } 
    server.auth.strategy('bearer', 'bearerAuth', { 
     authorization : authorization 
    }); 
    }); 
    console.log(params); 
    async.series([ 
     function(cb){} 
     ]} 

完全なエラーメッセージ:

Error: Unknown authentication strategy: bearer in path: /api/orders/{order_id}/vehicles/{_id?} 
    at Object.exports.assert (e:\python_training\Training\Node\Test\Project\Backend\node_modules\hapi\node_modules\hoek\lib\index.js:723:11) 
    at e:\python_training\Training\Node\Test\Project\Backend\node_modules\hapi\lib\auth.js:152:14 
    at Array.forEach (native) 
    at internals.Auth._setupRoute (e:\python_training\Training\Node\Test\Project\Backend\node_modules\hapi\lib\auth.js:149:24) 
    at new module.exports.internals.Route (e:\python_training\Training\Node\Test\Project\Backend\node_modules\hapi\lib\route.js:142:47) 
    at internals.Connection._addRoute (e:\python_training\Training\Node\Test\Project\Backend\node_modules\hapi\lib\connection.js:375:17) 
    at internals.Connection._route (e:\python_training\Training\Node\Test\Project\Backend\node_modules\hapi\lib\connection.js:367:18) 
    at wrappedRoute [as _route] (e:\python_training\Training\Node\Test\Project\Backend\node_modules\newrelic\lib\instrumentation\hapi.js:222:29) 
    at internals.Plugin._apply (e:\python_training\Training\Node\Test\Project\Backend\node_modules\hapi\lib\plugin.js:460:14) 
    at internals.Plugin.route 

この問題を解決する方法はありますか?

は編集:私はserver.jsファイルを変更し、私はserver.js

var validationFunction = Authorization.auth; 
console.log(validationFunction); 

server.register(
    [{ 
     register: bearerSimple 
    }], function(err){ 
if(err){ 
    console.log("Failed to log the plugin",err); 
    throw err; 
} 

server.auth.strategy('bearer', 'bearerAuth', { 
    validationFunction : validationFunction 
}); 
}); 

におよび認可ファイルに戦略を置い

コントローラファイルから戦略を削除
この

function rauth(accessToken, cb) { 
    var criteria = {accessToken: accessToken}; 
    var projection = {}; 
    var options = {limit: 1}; 
    Service.AdminService.getadmin(criteria, projection, options, function (err, data) { 
     if (err) { 
      cb(err); 
     } else if (data && data.length > 0 && data[0]._id) { 
      console.log(data); 
      console.log(data.length); 
      adminId = data[0]._id; 
      cb() 
     } else { 
      cb(UniversalFunctions.CONFIG.APP_CONSTANTS.STATUS_MSG.ERROR.INVALID_ACCESS_TOKEN); 
     } 
    }); 
のように見えます

このエラーが発生しました:

Error: options.validateFunc must be a valid function in bearerAuthentication scheme 

私は数日からこの問題を克服しています。誰もがここで問題になる可能性があることを示唆することはできますか?

私が見つけた唯一の問題は、validateFunctionで渡されたコールバック関数のパラメータを使用していましたが、そのパラメータがgetadminという別の関数で定義されているため、パラメータを削除できません。誰でもこれを回避する方法を提案できますか?

+0

あなたのauth関数 'function rauth(accessToken、cb)'にタイプミスがありますか、それとも単なる貼り付けエラーですか? – Ankh

+0

これはタイプミスです!私はそれが戦略で言及された機能で問題を見つけました。私はvalidationFunction:validationFunctionを述べましたが、それはvalidateFunction:validationFunctionであると考えられていました。今はgetメソッドを実行すると、作成された関数を読み込むことさえできません。 – Anamika

答えて

関連する問題