1

我正在用 Express JS 开发一个 API。我想使用http-auth 库,我一直在尝试使用摘要身份验证,但我一直无法使用它。这是我的代码:

var app        = require('express')(),
    routes     = require('./routes'),
    bodyParser = require('body-parser'),
    auth       = require('http-auth'); 

app.use(bodyParser.json()); // Soporta json encoded bodies
app.use(bodyParser.urlencoded({ // Soporta encoded bodies
    extended: true
}));

var digest = auth.digest({
    realm: 'prueba',
    file: __dirname + "/usr.pass"
});

app.use(auth.connect(digest));

// Conectamos todas nuestras rutas
app.use('/', routes);

// Levantamos servidor
app.listen(9999, () => {
    Console.log('running');
});

我的usr.pass文件有这一行:(jdurini:prueba:88bfcf02e7f554f9e9ea350b699bc6a7密码是 MD5 表示 por '2315')。

我正在使用 POSTMAN 来调用我的端点。在这种情况下,我正在尝试 POST 方法localhost:9999,每次尝试时,它都会转到 digest.on('fail') 事件。

Authorization选项卡中,我使用此数据

我究竟做错了什么?这是我第一次使用 Express,所以任何评论都会有所帮助。

编辑 1 - 8 月 14 日

postman 中的授权标头如下Digest username="jdurini", realm="prueba", nonce="", uri="/", response="2c01bce3e1980c575fc82e32f9943617", opaque="":当我填写授权表格时,此标头会自动生成:

  • 类型:摘要认证
  • 用户名:jdurini
  • 境界:普鲁巴
  • 密码:2315

请求中没有使用其他标头。

4

1 回答 1

3

原因

您的身份验证文件似乎有问题。

解决方案

我刚刚使用htdigest重新生成了身份验证行:

htdigest usr.pass prueba jdurini

并得到了这样的东西:

jdurini:prueba:546bb2109e9d875fb486bf90a55fdbd6

新版本对我有用。

注意

我猜您可能想将Console.log('running')行更改为小写,因为您的版本无法为我编译。

于 2017-08-12T10:02:45.353 回答