如何使用护照 js 保护命名空间

How to secure a namespace with passport js?

本文关键字:保护 命名空间 js 何使用      更新时间:2023-09-26

假设我有一个具有以下命名空间的路由:

app.use('/logged', adminRoute);

现在,我创建了以下 passportjs 函数:

app.get('/logged/panel', function (req, res) {
  if (req.user === undefined) {
      res.redirect('/login');
  } else {
      res.render('/logged/panel', {
      user: req.user
  })
  }
});

此函数检查用户是否在/logged/panel模式上进行身份验证。

我想修改这个函数,以便它将对来自adminRoute的每个获取/发布 url 模式执行检查。我怎样才能正确地做到这一点?

考虑使用 express.Router

function ensureAuthenticated(req, res, next) {
  if(logged) return next();
  res.redirect('/login');
}
var loggedRouter = express.Router();
loggedRouter
  .use(ensureAuthenticated)
  .get('/panel', panelHandler)
  .get('/other', otherHandler);
var mainRouter = express.Router();
mainRouter.use('/logged', loggedRouter);
app.use(mainRouter);

您可以包括检查用户是否登录ensureAuthenticated函数。此中间件函数将始终在/logged/panel/logged/other之前执行。