NodeJ中的基本身份验证不起作用

时间:2017-04-22 07:33:29

标签: javascript node.js express

我创建了以下nodejs脚本,该脚本与基本身份验证有关。我通过键入 node server 来运行服务器,因此本地URL是 localhost:3000 。在我的浏览器中,我应该得到一个提示窗口,我可以在其中输入用户名和密码。取而代之的是没有出现提示窗口,我收到一条消息欢迎快递

    var express = require('express');
    var morgan = require('morgan');

    var hostname = 'localhost';
    var port = 3000;

    var app = express();

    app.use(morgan('dev'));

    function auth (req, res, next) {
        console.log(req.headers);
        var authHeader = req.headers.authorization;
        if (!authHeader) {
            var err = new Error('You are not authenticated!');
            err.status = 401;
            next(err);
            return;
        }

        var auth = new Buffer(authHeader.split(' ')[1], 'base64').toString().split(':');
        var user = auth[0];
        var pass = auth[1];
        if (user == 'admin' && pass == 'password') {
            next(); // authorized
        } else {
            var err = new Error('You are not authenticated!');
            err.status = 401;
            next(err);
        }
    }

    app.use(auth);

    app.use(express.static(__dirname + '/public'));
    app.use(function(err,req,res,next) {
                res.writeHead(err.status || 500, {
                'WWW-Authenticate': 'Basic',
                'Content-Type': 'text/plain'
            });
            res.end(err.message);
    });

    app.listen(port, hostname, function(){
      console.log(`Server running at http://${hostname}:${port}/`);
    });

任何想法为什么会发生这种情况?

谢谢,

西奥。

0 个答案:

没有答案