我尝试根据发现的教程实施基本的身份验证策略。这就是我对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的新手,所以我无法弄清楚出了什么问题。我是否以正确的方式实施了身份验证策略?
答案 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.