以前のSOの質問に従って、Expressで動作するcsrfミドルウェアを正常に取得しました。それはすべてのフォームの提出を拒否していますが、トークンをうまく生成しています。CSRFミドルウェアが問題を引き起こしていますNode.JS + Express
私が見ることのできる唯一の可能性のある競合は、私はredisをセッションストアとして使用していますが、セッションにconnect-redisとsocket.ioを接続していますが、私はソケットビットをコメントアウトしています。
これは私のミドルウェアと呼んでいる順序は、おそらくここでうんざりですか?
(CoffeeScriptの)
app.configure ->
app.set 'views', __dirname + '/views'
app.set 'view engine', 'jade'
app.use express.bodyParser()
app.use express.methodOverride()
app.use express.cookieParser()
app.use express.session
secret: "itsasecret"
store: sessionStore
app.use express.csrf()
app.dynamicHelpers
token: (req, res) ->
req.session._csrf
app.use app.router
app.use express.static(__dirname + '/public')
これがポストされたデータに応答ルートです。
(これは、開発コードではありません、ちょうど私がノードを学ぶ私はよく承知しています、私はそれをオンラインで置くならば、これは怪物になります)
app.post '/admin/logintry', (req, res) ->
if req.body.username is 'Tim' and req.body.password is 'TempPassword'
req.session.adminIn = true
res.redirect '/admin/home'
else
res.redirect '/admin/login?failed=true'
ここでは、フォームページ上のブラウザに達しているHTMLです:
<input type="hidden" token="5ODFxml1QAhQvOmq1QE6Qd7n">
そして "/管理/ logintry" から受信した応答:
Forbidden
N Node、Express、そしてSOへのew、ちょうど最近、適切に学んだjavascript、どこで問題を探し始めるのか不明。どの援助も、掘り出しを始める場所でさえも大いに感謝します。
乾杯。
すべて機能しています。以前の質問に基づいて修正するときに名前を取り出した。早速のご返事ありがとうございます! –