2013-04-07 10 views
5

mam setup CSRF na moim Express v3 aplikacji, a ja mam to tak:Zakazane przez CSRF na moim formularzu rejestracyjnym, nie wiem dlaczego

app.use(express.session({ 
    secret: "gdagadgagd", 
    cookie: { 
    httpOnly: true, 
    path : '/', 
    maxAge: 1000*60*60*24*30*12 
    } 
})); 
app.use(express.csrf()); 
app.use(function(req, res, next) { 
    res.locals.token = req.session._csrf; 
    next(); 
}) 

i na mojej stronie token pojawia się jako:

<input type="hidden" name="_csrf" value="E3afFADF3913-fadFK31"> 

Ale gdy próbuję zarejestrować się na mojej stronie, mam ten błąd:

Error: Forbidden 
    at Object.exports.error (/Users/account/Desktop/nodeapp/node_modules/express/node_modules/connect/lib/utils.js:55:13) 
    at Object.handle (/Users/account/Desktop/nodeapp/node_modules/express/node_modules/connect/lib/middleware/csrf.js:54:41) 
    at next (/Users/account/Desktop/nodeapp/node_modules/express/node_modules/connect/lib/proto.js:190:15) 
    at next (/Users/account/Desktop/nodeapp/node_modules/express/node_modules/connect/lib/middleware/session.js:313:9) 
    at /Users/account/Desktop/nodeapp/node_modules/express/node_modules/connect/lib/middleware/session.js:337:9 
    at /Users/account/Desktop/nodeapp/node_modules/express/node_modules/connect/lib/middleware/session/memory.js:50:9 
    at process._tickCallback (node.js:415:13) 

używam Jade jako mojego silnika i t szablonu jego jest to, co mam:

input(type='hidden', name='_csrf', value=token) 

mam dostępu do strony internetowej bezpośrednio na localhost: 3000 i nie jestem pewien, dlaczego mi zakazane od rejestracji konta. Dzięki!

Odpowiedz

3

Należy użyć oprogramowania pośredniego bodyParser, aby serwer wiedział, że przekazano _csrf.

Wstaw app.use(express.bodyParser()); przed app.use(express.csrf());.

+0

Ten sam numer tutaj - dzięki! –

Powiązane problemy