使用http-auth消化验证



尝试在nodejs中实现摘要auth。以下是代码

var http = require('http');
var auth = require('http-auth');
var express = require('express');
var app = express();
var user;
var basic = auth.basic({
    realm: 'Sample',
    file: __dirname + "/users.htpasswd",
    algorithm:'md5'
});
basic.on('success', (result, req) => {
    console.log(`User authenticated: ${result.user}`);
    user = result.user;
});
basic.on('fail', (result, req) => {
    console.log(`User authentication failed: ${result.user}`);
    console.log(req.headers.authorization);
});
basic.on('error', (error, req) => {
    console.log(`Authentication error: ${error.code + " - " + error.message}`);
});
http.createServer(app).listen(8000);
app.use(auth.connect(basic));
app.get('/', function(req, res) {
    console.log(req.headers);
    console.log(basic);
    res.json('Hello from '+ user);
    res.end();
});
app.post('/', function(req, res) {
    console.log(req.headers);
    console.log(basic);
    res.json('Hello from '+ user);
    res.end();
});

这是用户的内容。htpasswd文件: - ANKIT:样本:E4B2D19B03346A1C45CE86AD41B85C5E

使用Postman使用用户名Ankit,PWD Ankit&调用终点。领域样本,每次我获得401时。

请让我知道我在哪里做错了。

谢谢

您正在混合基本auth和digest auth。用auth.digest替换auth.basic,您的代码应如下。