node.js – NodeJS Express:如何保护URL

我正在使用最新版本的NodeJS和ExpressJS(对于MVC)。

我通常配置这样的休息路径,例如:

app.get('/archive', routes.archive);  

现在我想要我的/ admin / *一组URL被保护,我的意思是我需要简单的身份验证,这只是一个草稿。

当用户尝试访问/ admin / posts时,在发送给他相应的视图和数据之前,我检查一个req.session.authenticated。如果没有定义,我重定向到登录页面。

登录页面有一个简单的验证表单和一个登录控制器方法:如果用户发送“正确的用户”和“正确的密码”,我设置了会话变量,并且他进行了身份验证。

我觉得困难或者我不明白的是,在每个/ admin / *路径调用之前,如何实际使用“过滤器”代码,我的意思是认证检查。

这与“中间件”表达功能有关吗?

谢谢

是的,中间件正是你想要的。中间件功能只是一个功能,就像任何其他Express路由处理程序一样,它会在实际的路由处理程序之前运行。你可以这样做:

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"); // or render a form, etc.
  }
}

// Automatically apply the `requireLogin` middleware to all
// routes starting with `/admin`
app.all("/admin/*", requireLogin, function(req, res, next) {
  next(); // if the middleware allowed us to get here,
          // just move on to the next route handler
});

app.get("/admin/posts", function(req, res) {
  // if we got here, the `app.all` call above has already
  // ensured that the user is logged in
});

您可以将requireLogin指定为要保护的每个路由的中间件,而不是使用/ admin / *使用app.all调用,但是通过我在此处显示的方式可以确保您不会意外忘记添加它以任何以/ admin开头的页面。

http://stackoverflow.com/questions/12276046/nodejs-express-how-to-secure-a-url

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:node.js – NodeJS Express:如何保护URL