gpt4 book ai didi

javascript - 为什么 http-auth 不适用于 express.static 中间件?

转载 作者:行者123 更新时间:2023-11-29 21:15:12 24 4
gpt4 key购买 nike

我正在尝试使用 http-auth 设置简单的身份验证模块。

我已经创建了这个设置,但它不能正常工作。提示用户/密码的对话框出现,但如果我关闭该对话框,应用程序继续工作,也就是说,身份验证似乎没有工作。

这似乎不起作用,因为我已尝试将此 http-auth 设置为在我的静态文件夹 www 中工作。

我的 app.js 基于 this one .

这是我的设置:

'use strict';

var express = require('express');
var app = express();
var auth = require('http-auth');

app.use(express.static('www'));

var basic = auth.basic({
realm: 'SUPER SECRET STUFF'
}, function(username, password, callback) {
callback(username == 'username' && password == 'password');
});

app.use("/", auth.connect(basic));

app.set('port', (process.env.PORT || 4000));
app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});

最佳答案

如果您浏览 http://localhost:4000/,您的示例将完美运行,点击取消后您会看到 401 消息,而不是您可以添加到 / 路由的内容(现在你没有它的路由处理程序)。

要使其适用于静态文件,您只需要为静态文件也启用身份验证,这样就可以了:

'use strict';

var express = require('express');
var app = express();
var auth = require('http-auth');

var basic = auth.basic({
realm: 'SUPER SECRET STUFF'
}, function(username, password, callback) {
callback(username == 'username' && password == 'password');
});

app.use(auth.connect(basic));
app.use(express.static('www'));

app.set('port', (process.env.PORT || 4000));
app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});

您可能会注意到身份验证中间件 auth.connect 应该在静态文件中间件 express.static 之前声明并且没有路由前缀,因为您的静态文件中间件没有路由前缀.

关于javascript - 为什么 http-auth 不适用于 express.static 中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39680330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com