Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么http auth不能与express.static中间件一起使用?_Javascript_Node.js_Authentication_Express_Http Auth - Fatal编程技术网

Javascript 为什么http auth不能与express.static中间件一起使用?

Javascript 为什么http auth不能与express.static中间件一起使用?,javascript,node.js,authentication,express,http-auth,Javascript,Node.js,Authentication,Express,Http Auth,我正在尝试使用模块设置一个简单的身份验证 我已经创建了此设置,但它无法正常工作。提示用户/密码的对话框出现,但如果我关闭该对话框,应用程序将继续工作,也就是说,身份验证似乎不起作用 这似乎不起作用,因为我已尝试将此httpauth设置为在我的静态文件夹www中工作 我的app.js基于 以下是我的设置: 'use strict'; var express = require('express'); var app = express(); var auth = require('http-au

我正在尝试使用模块设置一个简单的身份验证

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

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

我的
app.js
基于

以下是我的设置:

'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
之前声明,并且没有路由前缀,因为您的静态文件中间件没有路由前缀。

尝试用正确的值替换域。@bjskistad我很困惑,正确的值是什么?真的需要吗?我想我只需要像以前一样设置一个用户/通行证。好吧,在这里,当我点击取消页面加载。在您的示例中,我如何添加一个默认路由?我的意思是一个
get('/',…)
。我尝试添加“在
之后获取”应用程序。使用
但现在我键入用户/通行证,并不断要求我输入用户/通行证。因为我想访问
http://localhost:4000
并查看
www
文件夹中的文件。@OsnyNetto不确定我是否理解您想要什么…单击“取消”后,您将看到401页(这意味着身份验证未成功)更多信息,请参见,而不是应附带200状态的成功页面info@OsnyNetto您是否希望路由受密码保护?你是否需要静态文件进行密码保护?是的,我想保护我的所有静态文件,我正在设置此身份验证以保护我应用程序中的所有内容以供公众查看。因此访问
localhost:4000
我想提示用户/pass,如果错误,则显示
401 Unauthorized
,否则显示
www
文件夹中的静态文件。我的示例如何不适合它?