2013-06-12 2 views
3

과 일치하지 않습니다 form_authenticity_token이 params [: authenticity_token]과 일치하지 않는 상황은 무엇입니까?레일 form_authenticity_token이 params [: authenticity_token]

확인되지 않은 요청이 내 앱에 전송되는 것을보고 있었기 때문에 form_tag를 무시하고 일부 디버깅 정보를 출력했습니다.

form_auth_token: #{form_authenticity_token.inspect} 
session_csrf_token: #{session['_csrf_token'].inspect} 
params:    #{params.inspect} 

그리고 출력이 세션이 form_auth_token에 맞게 적절한 토큰을 한 것으로 보여,하지만 PARAMS 제출 authenticity_token이 일치하지 않았다 가지고 :

form_auth_token: "gckttsVeq2XvTBwQX3BaInWCivIhvR/mYBWjs119eb8=" 
session_csrf_token: "gckttsVeq2XvTBwQX3BaInWCivIhvR/mYBWjs119eb8=" 
params:    {"utf8"=>"✓", "authenticity_token"=>"+5IINl7vEh1jJJwP+RiXXws+4kEwM3fpJsCOn+gZ0AA=" ... 

내가 생각하는 정의에 의해 PARAMS [: authenticity_token]은 form_authenticity_token과 동일합니다.

  1. 잘못된 방법으로 디버깅하고 있습니까?
  2. 무엇이 문제의 원인 일 수 있습니까?

답변

0

몇 가지 간단한 제안 : 레일스 jquery 헬퍼를 사용하는 경우 레일스는 자동으로 POST 요청의 HTML 문서 헤드에서 csrf-token 메타 태그 값을 추가합니다. 그 값이 HTML 문서의 <head> 태그에 있는지 확인하여 일치하는지 확인합니다.