Middleware
basicAuth()
基本的认证中间件,在req.user
里添加用户名
用户名和密码的例子:
app.use(express.basicAuth('username', 'password'));
校验回调:
app.use(express.basicAuth(function(user, pass){
return 'tj' == user && 'wahoo' == pass;
}));
异步校验接受参数fn(err, user)
, 下面的例子req.user
将会作为user对象传递.
app.use(connect.basicAuth(function(user, pass, fn){
User.authenticate({ user: user, pass: pass }, fn);
}))
bodyParser()
支持 JSON, urlencoded和multipart requests的请求体解析中间件。 这个中间件是json()
, urlencoded()
,和multipart()
这几个中间件的简单封装
app.use(express.bodyParser());
// 等同于:
app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
从安全上考虑,如果你的应用程序不需要文件上传功能,最好关闭它。我们只使用我们需要的中间件。例如:我们不使用bodyParser
、multipart()
这两个中间件。
app.use(express.json());
app.use(express.urlencoded());
如果你的应用程序需要使用文件上传,设置一下就行。 一个简单的介绍如何使用.
compress()
通过gzip / deflate压缩响应数据. 这个中间件应该放置在所有的中间件最前面以保证所有的返回都是被压缩的
app.use(express.logger());
app.use(express.compress());
app.use(express.methodOverride());
app.use(express.bodyParser());
cookieParser()
解析请求头里的Cookie, 并用cookie名字的键值对形式放在 req.cookies
你也可以通过传递一个secret
字符串激活签名了的cookie
app.use(express.cookieParser());
app.use(express.cookieParser('some secret'));
cookieSession()
提供一个以cookie为基础的sessions, 设置在req.session
里。 这个中间件有以下几个选项:
- key cookie 的名字,默认是 connect.sess
- secret prevents cookie tampering
- cookie session cookie 设置, 默认是 { path: '/', httpOnly: true, maxAge: null }
- proxy 当设置安全cookies时信任反向代理 (通过 "x-forwarded-proto")
app.use(express.cookieSession());
清掉一个cookie, 只需要在响应前把null赋值给session:
req.session = null
csrf()
CSRF 防护中间件
默认情况下这个中间件会产生一个名为"_csrf"的标志,这个标志应该添加到那些需要服务器更改的请求里,可以放在一个表单的隐藏域,请求参数等。这个标志可以通过 req.csrfToken()
方法进行校验。
bodyParser()
中间件产生的 req.body
, query()
产生的req.query
,请求头里的"X-CSRF-Token"是默认的 value
函数检查的项
这个中间件需要session支持,因此它的代码应该放在session()
之后.
directory()
文件夹服务中间件,用 path
提供服务。
app.use(express.directory('public'))
app.use(express.static('public'))
这个中间件接收如下参数:
- hidden 显示隐藏文件,默认为false.
- icons 显示图标,默认为false.
- filter 在文件上应用这个过滤函数。默认为false.