2017-11-26 8 views
0

내 응용 프로그램에서 하나의 차이점을 제외하고 official docs의 코드가 있습니다. POST 요청에 대한 응답으로 GET이 아닌 xsrfToken을 보냅니다.Express에서 POST 요청에 csrfToken을 가져 오는 방법은 무엇입니까?

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

// setup route middlewares 
var csrfProtection = csrf({ cookie: true }) 
var parseForm = bodyParser.urlencoded({ extended: false }) 

var app = express() 

// we need this because "cookie" is true in csrfProtection 
app.use(cookieParser()) 

app.post('/getCsrfToken', /*csrfProtection,*/ function (req, res) { 
    // check credentials from request.body 
    // and then 

    res.render('send', { csrfToken: req.csrfToken() }) //EXCEPTION: csrfToken is not a function 
}) 

app.post('/process', parseForm, csrfProtection, function (req, res) { 
    res.send('data is being processed') 
}) 

나는 달걀 암탉 문제에 직면하고있어 : 내가 csrfProtection을 사용하는 경우, 내가 토큰없이 엔드 포인트의 코드로 얻을 수없는,하지만 난 그것을하지 않으면, req.csrfToken는 정의된다.

url 매개 변수로 암호를 노출하고 싶지 않기 때문에 gerCsrfToken 끝점을 POST로 설정해야합니다.

답변

0

질문은 csurf 관리자가 답변했습니다. 빠른 답변을 보내 주셔서 감사합니다.

https://github.com/expressjs/csurf/issues/133

제 (까다로운) 용액이 특정 포인트

app.post('/authenticate', csrf({ cookie: true, ignoreMethods: ['POST'] }), function (req, res) { 
위해 POST 방법을 무시하는