이전 SO 질문과 같이 express에서 csrf 미들웨어를 성공적으로 사용할 수있게되었습니다. 토큰을 잘 생성하지만 모든 양식 제출을 거부합니다.CSRF 미들웨어로 인해 문제가 발생합니다. Node.JS + Express
내가 볼 수있는 유일한 충돌은 세션에 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">
그리고 "/ 관리/logintry"로부터받은 응답 :
Forbidden
N ew 노드, Express 및 SO, 최근 제대로 제대로 배운 자바 스크립트, 심지어 어디서부터 문제를 찾기 시작할 지 확신 할 수 없습니다. 어떤 도움도, 파고 시작하는 곳이라 할지라도 크게 감사합니다.
건배. 당신이 Connect - csrf documentation 보면
모두 지금 사용 중입니다. 이전 질문에 기초하여 고칠 때 이름을 꺼 냈습니다. 빠른 답변 감사합니다! –