使用express js的http-auth摘要

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

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表示“2315”)。

我使用POSTMAN来呼叫我的terminal。 在这种情况下,我正在尝试POST方法localhost:9999 ,每次我尝试,它会去digest.on('失败')事件。

授权选项卡中,我使用这些数据 。

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

编辑1 – 8月14日

Digest username="jdurini", realm="prueba", nonce="", uri="/", response="2c01bce3e1980c575fc82e32f9943617", opaque=""授权标题如下: Digest username="jdurini", realm="prueba", nonce="", uri="/", response="2c01bce3e1980c575fc82e32f9943617", opaque="" 。 当我使用以下方式填写授权表单时,此标题是自动生成的:

  • 键入 :摘要validation
  • 用户名 :jdurini
  • 领域 :prueba
  • 密码 :2315

请求中没有使用其他头文件。

原因

看起来你的validation文件有问题。

Soluton

我只是用htdigest重新生成authentication行:

 htdigest usr.pass prueba jdurini 

并得到这样的东西:

 jdurini:prueba:546bb2109e9d875fb486bf90a55fdbd6 

新版本适合我。

注意

我想你可能想把Console.log('running')一行改成小写,因为你的版本不能为我编译。