首页 > 解决方案 > Node.js 是否可以禁止客户端访问 /register_success 端点,除非通过 res.redirect()?

问题描述

当客户在我的node.js应用程序上成功注册时,他们会被重定向到成功页面,

res.redirect('/register_success');

www.mysite/register_success但是,任何客户端都可以通过在地址栏中键入来访问此端点。

是否有可用的方法可以限制客户端访问此端点,除非路由器在成功注册后将它们转发给它?我正在寻找,但我似乎找不到任何东西。

标签: node.jsexpress

解决方案


您需要一些方法来跟踪页面视图之间的状态。

传统上,这是通过包含会话标识符的 cookie 完成的,会话状态存储在服务器端。您可以使用express-session,它会为您执行此操作。

文档中

app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true
}))

app.use(function (req, res, next) {
  if (!req.session.views) {
    req.session.views = {}
  }

  // get the url pathname
  var pathname = parseurl(req).pathname

  // count the views
  req.session.views[pathname] = (req.session.views[pathname] || 0) + 1

  next()
})

app.get('/foo', function (req, res, next) {
  res.send('you viewed this page ' + req.session.views['/foo'] + ' times')
})

app.get('/bar', function (req, res, next) {
  res.send('you viewed this page ' + req.session.views['/bar'] + ' times')
})

推荐阅读