【发布时间】:2012-04-21 15:51:49
【问题描述】:
已成功使 csrf 中间件按照之前的 SO 问题快速运行。它生成令牌很好,但它拒绝所有表单提交。
我能看到的唯一可能的冲突是我使用 redis 作为带有 connect-redis 的会话存储并将 socket.io 插入会话,但我已经注释掉了套接字位,它仍然不能很好地播放。
这就是我调用中间件的顺序,这里可能有问题吗?
(咖啡脚本)
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">
以及从“/admin/logintry”收到的响应:
Forbidden
Node、Express 和 SO 的新手,最近才正确学习 javascript,甚至不确定从哪里开始寻找问题。非常感谢任何帮助,即使只是关于从哪里开始挖掘。
干杯。
【问题讨论】:
标签: node.js express csrf middleware