首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hapi js API基本认证错误

Hapi js API基本认证错误
EN

Stack Overflow用户
提问于 2018-02-05 16:36:53
回答 1查看 577关注 0票数 1

我正在研究hapi js API基本身份验证,我正在使用有关身份验证的Hapi文档。我相信我做的每件事都是正确的,但是关于UnhandledPromiseRejectionWarning,我得到了下面的错误。请帮帮忙

index.js

代码语言:javascript
复制
'use strict';

const Bcrypt = require('bcrypt');
const Hapi = require('hapi');
const Basic = require('hapi-auth-basic');

const server = new Hapi.Server({
  host: 'localhost',
  port: 3000
})

const users = {
    john: {
        username: 'john',
        password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm',  
        name: 'John Doe',
        id: '2133d32a'
    }
};

const validate = function (request, username, password, callback) {
    const user = users[username];
    if (!user) {
        return callback(null, false);
    }

Bcrypt.compare(password, user.password, (err, isValid) => {
    callback(err, isValid, { id: user.id, name: user.name });
});
};

server.register(Basic, (err) => {

if (err) {
    throw err;
}

server.auth.strategy('simple', 'basic', { validateFunc: validate });
server.route({
    method: 'GET',
    path: '/',
    config: {
        auth: 'simple',
        handler: function (request, reply) {
            reply('hello, ' + request.auth.credentials.name);
        }
    }
});

server.start((err) => {

    if (err) {
        throw err;
    }

    console.log('server running at: ' + server.info.uri);
});
});

package.json

代码语言:javascript
复制
    "bcrypt": "^1.0.3",
    "hapi-auth-basic": "^5.0.0",
    "hapi": "^17.1.0"

错误

代码语言:javascript
复制
(node:1248) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): AssertionError [ERR_ASSERTION]: Invalid register options "value" must be an object
(node:1248) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-05 17:41:44

如果您希望代码正常工作,则必须使用低于17的版本,即(16.6.2),或者查找更新到您正在使用的hapi版本的代码。

代码语言:javascript
复制
const Bcrypt = require('bcrypt');
const Hapi = require('hapi');

const users = {
john: {
    username: 'john',
    password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm',   // 'secret'
    name: 'John Doe',
    id: '2133d32a'
}
};

const validate = async (request, username, password, h) => {

if (username === 'help') {
    return { response: h.redirect('https://hapijs.com/help') };     // custom response
}

const user = users[username];
if (!user) {
    return { credentials: null, isValid: false };
}

const isValid = await Bcrypt.compare(password, user.password);
const credentials = { id: user.id, name: user.name };

return { isValid, credentials };
};

const main = async () => {

const server = Hapi.server({ port: 4000 });

await server.register(require('hapi-auth-basic'));

server.auth.strategy('simple', 'basic', { validate });
server.auth.default('simple');

server.route({
    method: 'GET',
    path: '/',
    handler: function (request, h) {

        return 'welcome';
    }
});

await server.start();

return server;
};

main()
.then((server) => console.log(`Server listening on ${server.info.uri}`))
.catch((err) => {

console.error(err);
process.exit(1);
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48618511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档