Node.js Expressjs/passportjs响应前更改标头

Node.js Expressjs/passportjs响应前更改标头,node.js,authentication,express,passport.js,digest-authentication,Node.js,Authentication,Express,Passport.js,Digest Authentication,我正在尝试更改在Nodejs的WWW-Authenticate报头中发送的报头质询 使用passportjs,我当前的服务器代码如下: router.route('/login/') .get(function(req, res){ if(req.isAuthenticated()) res.redirect('/admin/'); else res.render('admin/partials/login.html'); }) .p

我正在尝试更改在Nodejs的WWW-Authenticate报头中发送的报头质询

使用passportjs,我当前的服务器代码如下:

router.route('/login/')

    .get(function(req, res){

        if(req.isAuthenticated()) res.redirect('/admin/');
        else res.render('admin/partials/login.html');
    })

    .post(passport.authenticate('digest'));
我面临的问题是,摘要授权首先发送401代码响应(这是正常的方式),但大多数浏览器(至少是webkit)都会启动一个提示popin,要求用户在检测到标题中的此类质询(摘要或基本)时进行身份验证

我读到一个解决方案是更改标题,修改 例如,
WWW-Authenticate:Digest
WWW-Authenticate:xDigest
,但我在Express中找不到这样做的方法

我认为中间件passport.authenticate必须设置头,在将响应发送到客户端之前,我找不到更改头的方法(我认为是在同一个中间件中)


谢谢你的建议。

好的,我发现passportjs提供了一种简单的方法,可以通过自定义回调调整响应

如果它能帮助任何人,以下是我必须走的路:

router.route('/login/')

    .post(function(req, res, next){

        passport.authenticate('digest', function(err, user, info){

            if(err) return console.log(err);

            if(!user){
                res.set('WWW-Authenticate', 'x'+info);
                return res.send(401);
            }

            req.login(user, function(err){
                if(err) return console.log(err);
                res.redirect('/admin/');
            });
        })(req, res, next);
    });
如您所见,authenticate方法是在中间件内部调用的,而不是作为中间件本身调用的