【问题标题】:intercepting http request before csurf validation在 csurf 验证之前拦截 http 请求
【发布时间】:2019-07-08 20:58:21
【问题描述】:

有没有办法在 csurf 验证之前拦截 http 调用。我有以下代码

var cookieParser = require('cookie-parser')
var csrf = require('csurf')
var bodyParser = require('body-parser')
var express = require('express')

// create express app
var app = express()

// create api router
var api = createApiRouter()

// mount api before csrf is appended to the app stack
app.use('/api', api)

// now add csrf and other middlewares, after the "/api" was mounted
app.use(bodyParser.urlencoded({ extended: false }))
app.use(cookieParser())
app.use(csrf({ cookie: true }))

app.get('/form', function (req, res) {
  // pass the csrfToken to the view
  res.render('send', { csrfToken: req.csrfToken() })
})

app.post('/process', function (req, res) {
  res.send('csrf was required to get here')
})

function createApiRouter () {
  var router = new express.Router()

  router.post('/getProfile', function (req, res) {
    res.send('no csrf to get here')
  })

  return router
}

我想记录客户端发送的 CSRF 令牌,以解决我遇到的错误。但我无法找到一种方法在发送请求以进行 CSRF 验证之前拦截该请求。

【问题讨论】:

    标签: javascript express csrf


    【解决方案1】:

    我可以通过添加以下代码来做到这一点

    var logToken = function (req, res, next) {
        console.log('Token: ', res.get('x-xsrf-token');
        next();
    };
    app.use(logToken);
    

    我在配置 csrf 令牌之前和配置 cookie 解析器之后添加了这段代码。

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 2016-03-29
      • 2013-06-05
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 2012-10-14
      • 1970-01-01
      相关资源
      最近更新 更多