//importo express
const express = require('express');
//importo mongoose
const mongoose = require('mongoose');
//path module
const path = require('path');;
// auth module
const auth = require('http-auth')
// connection module
//const connect = require('../node_modules/connect/index');
//estraggo il metodo router da express
const router = express.Router();
//funzione per la validazione
const { body, validationResult } = require('express-validator');
//importo lo schema
const Registration = mongoose.model('Registration');
//auth module
const basic = auth.basic({
file: path.join(__dirname, '../users'),
});
// lo slash corrisponde a qualsiasi pagina. Tutto viene visualizzato dalla cartella views
router.get('/', (req, res) => {
res.render('form', {title: 'Registration form'});
});
// /registrations: invento io la mia pagina. Tutto viene visualizzato dalla cartella views
router.get('/registrations', auth.connect(basic), (req, res) => {
Registration.find()
.then((registrations) => {
res.render('index', { title: 'Listing registrations', registrations });
})
.catch(() => { res.send('Sorry! Something went wrong.'); });
});
router.post('/',
[
body('name')
.isLength({ min: 1 })
.withMessage('Please enter a name'),
body('email')
.isLength({ min: 1 })
.withMessage('Please enter an email'),
],
(req, res) => {
const errors = validationResult(req);
if (errors.isEmpty()) {
const registration = new Registration(req.body);
registration.save()
.then(() => { res.send('Thank you for your registration!'); })
.catch(() => { res.send('Sorry! Something went wrong.'); });
} else {
res.render('form', {
title: 'Registration form',
errors: errors.array(),
data: req.body,
});
}
}
);
//esporto router per poterlo importare in altri file
module.exports = router;
我正在尝试通过这本书《9个实用的node js项目》来学习Node Js。我遇到了 http 身份验证问题。我一步一步地按照说明操作,但我在控制台中发现了这个错误(下图)。
所以我从 node_modules connect 文件夹中添加了模块(连接模块下的注释)。只有当我删除 router.get 中的 auth 变量时,错误才会消失,但在我的 /registrations 列表中它不会询问我的用户名和密码。我该如何解决?几个小时以来,我一直在努力找出问题所在。任何帮助和澄清表示赞赏。