【问题标题】:express.js - Session access middleware not workingexpress.js - 会话访问中间件不起作用
【发布时间】:2018-06-29 04:41:12
【问题描述】:

我正在尝试使用 JS、Express 和 Session 创建一个中间件,其中根据是否存在会话来阻止对某些页面的访问。这是我尝试过的:

function validateAdminLogin(req,res,next) {
  if(req.session.adminId) {
    next()
  } else {
      res.redirect('/signIn')
  }
}

app.all('/admin/*',validateAdminLogin,function(req,res,next){
  next()
})

在没有活动会话的情况下尝试访问 /admin 下的任何页面后,代码仍在访问 /admin 文件。

【问题讨论】:

  • "访问 /admin... 没有活动会话,代码仍在重定向到 /signIn。"这不是预期的行为吗?
  • @DanielReinoso 你是对的......抱歉,我的意思是访问管理文件。我更新了问题。
  • 你也可以app.all('/admin/*', validateAdminLogin).

标签: javascript node.js express session


【解决方案1】:

确保在任何 /admin 端点之前添加下面的 sn-p。

function validateAdminLogin(req,res,next) {
  if(req.session.adminId) {
    next()
  } else {
      res.redirect('/signIn')
  }
}

app.all('/admin/*',validateAdminLogin,function(req,res,next){
  next()
})

例子:

app.get('/admin/test2', (req, res) => {
  res.send('Not affected by middleware')
})

app.all('/admin/*', validateAdminLogin)

app.get('/admin/test', (req, res) => {
  res.send('Affected by middleware')
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2015-06-30
    • 2017-11-25
    • 2020-05-26
    • 2012-02-25
    • 2016-06-03
    • 2011-09-13
    相关资源
    最近更新 更多