javascript - 如何使用 Express 和 Nodejs 保护静态路由

标签 javascript node.js express

我使用 Node(最新版本)+ Express,也是最新版本。我有 2 个文件夹,公共(public)文件夹和安全文件夹。安全文件夹只能在登录后访问。

我自己创建了一个登录系统,现在我想知道如何确保到这个“安全文件夹”的路由安全。

我想设置一个静态路由到我的“安全”文件夹(就像我对公共(public)文件夹所做的那样),然后检查用户是否已登录,但它不起作用。

这就是我认为应该起作用的...

(...)
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'secured')));
(...)

function requireLogin(req, res, next) {
  if (req.session.loggedIn) {
    next(); // allow the next route to run
  } else {
    // require the user to log in
    res.redirect("/login"); 
  }
}

app.all("/secured/*", requireLogin, function(req, res, next) {
  next(); 

});

最佳答案

在单独的路径上为您的私有(private)静态指定一个不同的文件夹

app.use(express.static(path.join(__dirname, 'public')));
app.use('/private', express.static(path.join(__dirname, 'private')));

然后你可以在每个请求上使用你的中间件

app.all('/private/*', function(req, res, next) {
  if (req.session.loggedIn) {
    next(); // allow the next route to run
  } else {
    // require the user to log in
    res.redirect("/login"); 
  }
})

关于javascript - 如何使用 Express 和 Nodejs 保护静态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612774/

相关文章:

linux - 如何在openwrt上自动启动nodejs应用程序 - Arduino Yun -

javascript - 使用 jQuery ajax 方法的简单expressjs PUT 处理程序

javascript - 为什么 React 不能正确更新 dom?

javascript - 如何将输出值显示为文本?

javascript - Highcharts:使用数组作为数据系列 - 排序

mongodb - mongoose node.js,使用 $lt 和 $gt 查询不工作

javascript - Node.js 中的异步查询是否有助于克服实时数据流中的延迟?

javascript - Promise.all 返回未定义的值

javascript - .ajaxStart() 和 .ajaxStop() 第一次后未触发

node.js - 如何使用 axios-mock-adapter 使用路由参数模拟 http 请求