这是我的代码,这里的问题是,当我使用hapi 14.x.x或更低版本运行它时,它非常适合我,但是当我使用hapi版本15.0.1或更高版本运行它时,它会给我以下错误。
认证过程中有什么变化吗?
throw new Error(msgs.join(' ') || 'Unknown error');
^
Error: Unknown authentication strategy UserAuth in /api/user/loginDetails
at Object.exports.unique.exports.contain.exports.reachTemplate.exports.assert.condition [as assert] (F:\cbl\projects\lawn-mower\node_modules\hapi\node_modules\hoek\lib\index.js:736
:11)
at internals.Auth.test.internals.Auth._setupRoute (F:\cbl\projects\lawn-mower\node_modules\hapi\lib\auth.js:144:14)我正在使用的示例路线
{
method: 'POST',
path: '/api/user/loginDetails',
config: {
auth: 'UserAuth',
handler: function (request, reply) {
},
validate: {
payload: {
},
headers: UniversalFunctions.authorizationHeaderObj,
failAction: UniversalFunctions.failActionFunction
},
plugins: {
'hapi-swagger': {
payloadType : 'form',
responses:Config.APP_CONSTANTS.swaggerDefaultResponseMessages
}
}
}
}我正在使用的策略
server.register(require('hapi-auth-bearer-token'), function (err) {
console.log("aaaaa");
server.auth.strategy('UserAuth', 'bearer-access-token', {
allowQueryToken: false,
allowMultipleHeaders: true,
accessTokenName: 'accessToken',
validateFunc: function (token, callback) {
}
});
});发布于 2017-04-03 09:34:18
这解决了我的问题,插件注册是来自HAPI15.x.x或更高版本的异步。
说明:在14.x.x版或更低版本中,事情会同步进行,比如当我们启动服务器时,它会首先找到注册插件,然后选择路由server.route(Routes).
这是在hapi版本15.x.x和更高版本中修复的,现在插件注册是异步,所以我们需要首先注册插件,然后需要初始化路由,如下例所示。
单击此处可从最新更新线程编号is 3295获得更多有关它的详细信息。
server.register(Plugins, function (err) {
if (err){
console.log("===========err=========",err)
server.error('Error while loading plugins : ' + err)
}else {
console.log("====================");
server.route(Routes);
server.log('info','Plugins Loaded');
}
});发布于 2017-06-01 14:03:24
发生此错误是因为您希望注册一个需要身份验证策略的路由,而hapi服务器还不能使用该策略。
确保在将路由添加到服务器之前已注册了UserAuth策略。
希望这能帮上忙!
发布于 2017-04-03 10:39:24
你只有定义的策略,没有计划。因此,按照下面的代码定义您的计划。
你应该试试这个:
var userFunc=function (server, options) {
return {
authenticate: function (request, reply) {
console.log('UserAuth');
return reply.continue({ credentials: { user: 'UserAuth' } });
}
};
};
server.auth.scheme('UserAuthScheme', userFunc); // here
server.auth.strategy('UserAuth', 'UserAuthScheme'); // here
server.route([{
method: 'POST',
path: '/api/user/loginDetails',
config: {
auth: 'UserAuth',
handler: function (request, reply) {
reply('/api/user/loginDetails');
},
validate: {
payload: {
},
headers: UniversalFunctions.authorizationHeaderObj,
failAction: UniversalFunctions.failActionFunction
},
plugins: {
'hapi-swagger': {
payloadType: 'form',
responses: Config.APP_CONSTANTS.swaggerDefaultResponseMessages
}
}
}
}]);https://stackoverflow.com/questions/43158808
复制相似问题