node.js - Expressjs删除静态文件夹

标签 node.js express

我有nodejs网页并且我正在使用expressjs。我有几个静态文件夹,当用户注销时,我必须删除其中一些。下面是我添加静态文件夹的方法,我没有使用任何选项,也许这就是问题所在。

app.use(express.static(__dirname + '/public'));

我需要如下所示的内容:

app.use(express.removeStatic(__dirname + '/public'));

app.use(express.static(__dirname + '/public',{vissible: false}));

最佳答案

如上所述here express.static 中间件基于serve-static 。无法删除已加载的中间件(静态文件)。

我建议创建您自己的静态服务中间件。您可以使用this作为引用,然后只需在服务静态中间件之前加载 session 中间件,然后添加一个选项来检查 session 数据是否可用,如果不可用,则不提供服务。

基本思想是这样的:

  return function serveStatic(req, res, next) {
    if (req.method !== 'GET' && req.method !== 'HEAD') {
      return next()
    }
    // add this
    if (req.session.loggedIn === false) {
      return next()
    }

示例

我复制了serve-static代码并添加了一个条件,你可以得到它here

  • 下载它并将其另存为 serve-static.js
  • 将其包含在您的 expressjs 项目中。
  • 根据您的用例进行修改。
  • 谨防未经测试的代码。

用法

var static = require('./serve-static')
// session middleware here
app.use(static(__dirname + '/public'));

req.session.loggedIntrue 时,这应该只提供静态文件。

当然,您可以将条件更改为您想要的任何内容,例如:

if (req.session && req.session.ANYTHING_I_WANT === false && !!someMore)  {
  // skip all the code below (will not serve)
  return next()
}

可以在 line 64 of my serve-static 上找到该条件要点。

Remember to add the session middleware before using the static middleware.

关于node.js - Expressjs删除静态文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26388122/

相关文章:

node.js - 使用 Express 检索多个 GET 参数

javascript - NodeJs : Compare URL Parameters & Delete Requests with array values using Express

javascript - promise 链接-应该 promise 所有功能

json - 转换文件完整内容nodejs

mysql - Knex.js 在服务器端代码中验证查询结果

javascript - 如何从嵌套 Promise 函数返回 Promise 对象

node.js - 将 Express 与 NodeJS 结合使用时 - View 缓存如何工作?

node.js/ express : Sending static files if they exist

node.js - 在 Node 和 Nginx 中终止 SSL/TLS 的位置

node.js - app.delete 在使用 nodeclipse IDE 的 Express 上引发语法错误