我有nodejs网页,我正在使用expressjs.我有几个静态文件夹,用户注销我必须删除其中一些.下面是我如何添加静态文件夹,我没有使用任何选项可能这是问题.
app.use(express.static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)
我需要以下内容:
app.use(express.removeStatic(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)
要么
app.use(express.static(__dirname + '/public',{vissible: false}));
Run Code Online (Sandbox Code Playgroud)
如上所述这里的express.static中间件是基于服务静电.无法删除已加载的中间件(静态文件).
我建议创建自己的服务静态中间件.您可以使用此作为参考,然后在服务静态中间件之前加载会话中间件,然后添加一个选项,检查会话数据是否可用,如果不可用则不提供.
基本想法是这样的:
return function serveStatic(req, res, next) {
if (req.method !== 'GET' && req.method !== 'HEAD') {
return next()
}
// add this
if (req.session.loggedIn === false) {
return next()
}
Run Code Online (Sandbox Code Playgroud)
我已复制serve-static代码并为其添加了条件,您可以在此处获取.
serve-static.js.expressjs项目中.var static = require('./serve-static')
// session middleware here
app.use(static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)
这应该只在req.session.loggedInis 时提供静态文件true.
当然,您可以将条件更改为您想要的任何内容:
if (req.session && req.session.ANYTHING_I_WANT === false && !!someMore) {
// skip all the code below (will not serve)
return next()
}
Run Code Online (Sandbox Code Playgroud)
请记住在使用静态中间件之前添加会话中间件.
| 归档时间: |
|
| 查看次数: |
1422 次 |
| 最近记录: |