使用hapi-auth-basic

时间:2019-01-12 08:32:19

标签: javascript node.js hapijs

我尝试根据发现的教程实施基本的身份验证策略。这就是我对server.js文件的最终设置。

    'use strict';

const Hapi=require('hapi');
const sequelize = require('sequelize');
const models = require('./models');
const routes = require('./services/routes');
// Create a server with a host and port
const server=Hapi.server({
    host:'localhost',
    port:3100
});

// Add the route

server.register(require('hapi-auth-basic'), function (err) {

    if(err) {           throw err;        }

    server.auth.strategy('simple', 'basic', {
        validateFunc: function (username, password, callback) {

            if (username === 'admin') {
        return callback(null, true, {scope: 'admin'}); // They're an `admin 
            if (username === 'user') {
       return callback(null, true, {scope: 'user'}); // They're a `user`   }
            return callback(null, false);            }
    });
    server.route(routes);

// Start the server

    /*models.sequelize.sync().then( function () {*/


    const start = async function () {

        try {
            await server.start();
        }
        catch (err) {
            console.log(err);
            process.exit(1);
        }

        console.log('Server running at:', server.info.uri);
    };
    start();
    /*
    })*/
});

运行npm start时出现以下错误:

  

(节点:7468)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。引发此错误的原因可能是抛出了一个没有catch块的异步函数,或者是拒绝了一个.catch()无法处理的承诺。    (拒绝ID:1)   (节点:7468)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。

我真的是node / hapi的新手,所以我无法弄清楚出了什么问题。我是否以正确的方式实施了身份验证策略?

2 个答案:

答案 0 :(得分:0)

C:\Program Files
--Gitlab-Runner
 |--config.toml
 |--gitlab-runner.exe

答案 1 :(得分:0)

在某些项目中,我还添加了以下块以捕获未知错误或与Promise相关的一些错误

process.on('unhandledRejection', error => {
  // eslint-disable-next-line no-process-exit
  process.exit(1);
});

process.on('uncaughtException', error => {
  logger.error(error.stack);
});

server.ext('onPreResponse', (request, h) => responseHandler(server, options, request, h));

responseHandler -> Is the method for parsing error to a starndard format.