Can*_*ice 17 basic-authentication node.js express
使用node.js的Express框架,我正在尝试提供目录中包含的静态文件,同时还对其进行基本身份验证.当我这样做时,系统会提示我输入用户名和密码(正如预期的那样),但是在我正确输入后,我得到了404.如果我删除了身份验证检查并提供了相同的目录,我实际上得到了这些页面包含在其中.
这是一个快速的服务器,我把它作为一个概念验证:
var express = require('express');
var app = express();
var auth = express.basicAuth(function(user,pass) {
return 'user' === user && 'pass' === pass;
});
app.use('/admin', auth, express.static(__dirname + '/admin'));
app.use('/adminNoAuth', express.static(__dirname + '/admin'));
app.listen(8082);
Run Code Online (Sandbox Code Playgroud)
当我点击时,localhost:8082/admin
我得到用户名/密码,然后是404.当我点击localhost:8082/adminNoAuth
它时,它会提供页面.
我正在使用Express 3.4.7和node.js 0.10.22.
jua*_*aco 35
app.use
不会让你以这种方式链接中间件.各种app.VERB
功能都有,但app.use
没有.这是一次一个中间件.
如果将2个中间件拆分为单独的调用,则应获得所需的结果:
app.use('/admin', auth)
app.use('/admin', express.static(__dirname + '/admin'));
Run Code Online (Sandbox Code Playgroud)
编辑
从Express版本开始,4.x
您可以将多个中间件作为数组或参数或两者的混合传入app.use
.现在,使静态文件授权安全:
app.use( "/admin", [ auth, express.static( __dirname + "/admin" ) ] );
Run Code Online (Sandbox Code Playgroud)
但两种方式仍然完全有效.
归档时间: |
|
查看次数: |
13125 次 |
最近记录: |