2013-04-07 6 views
5

わからない私は、私のExpress v3アプリ上でセットアップCSRFを持っている、と私はこのようにそれを持っている:は、なぜ

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(); 
}) 

と私のページ上のトークンのように表示されます。

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

しかし、私は私のWebページに登録しようとしたとき、私はこのエラーを取得する:

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) 

私は私のテンプレートエンジンとtと翡翠を使用しています彼は私が持っているものです。

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

私はローカルホストで直接Webページにアクセスしています:3000と私はアカウントを登録から禁じられていますなぜ私はよく分かりません。ありがとう!

答えて

3

サーバーに_csrfが渡されたことを知らせるには、bodyParserミドルウェアを使用する必要があります。

の前にapp.use(express.bodyParser());を挿入します。

+0

同じ問題 - 感謝! –