错误:错误地配置了CSRF - Express.js

问题描述:

我越来越Error: misconfigured csrf当我试图访问我的登录页面。我执行csurf到路由器,但我只是得到响应的StatusCode 500错误:错误地配置了CSRF - Express.js

实现:

let router = require("express").Router(); 

let PostLoginResource = require("./../resources/PostLoginResource"); 
let RateLimit = require("express-rate-limit"); 
let csrf = require("csurf"); 

let csrfProtection = csrf({ cookie: true }); 

router.route("/login") 
    .get(csrfProtection, function(req, res) { 
     // Do some stuff 
    }) 

    .post(loginLimiter, function(req, res) { 

     PostLoginResource(req, function(success, err) { 
      // Do some stuff 
     }) 

    }); 

我开始我使用这个模块之前会话cookie的app.js:

// Parse the request body as JSON 
app.use(bodyParser.json()); 

// Parse the URL encoded data 
app.use(bodyParser.urlencoded({extended: true})); 

// Set up session-cookie 
app.use(session({ 
    secret: "secret", 
    resave: false, 
    saveUninitialized: true, 
    cookie: {secure: true, 
     httpOnly: true, 
     maxAge: 1000 * 60 * 60 * 24 
    } 
})); 

不过,这是行不通的。任何人都知道是什么问题?

+0

是真实的是,路径正确:./../resources/PostLoginResource? – Remario

+0

是的,否则那将是错误的消息,而不是错误:错误地配置了CSRF – Jesper

+0

但你也有一个500,这意味着内部错误。不正确的语句导致it.Where是否要求会话对象> – Remario

var cookieParser = require('cookie-parser') 

解析饼干 我们需要这个,因为 “曲奇” 在csrfProtection

app.use(cookieParser()) 
+0

注*由于调用app.use(CSRF())必须app.use(cookieParser())和app.use(会话({之后设置... – Remario

+0

作为快速会话中间件的官方说明:https://github.com/expressjs/session '自1.5.0版本以来,不再需要使用cookie分析器中间件来使此模块工作。现在模块可以直接读取和REQ/RES写的Cookie。使用Cookie的解析器可能导致的问题,如果这个秘密是不是这个模块和cookie的解析器之间的相同“。 – Jesper