2011-09-12 2 views
7

사용 요청 헤더에 포함 되더라도의 Ajax 게시물 CURRENT_USER 설정하지 ajax, Devise는 current_donor를 설정하지 않습니다.고안 정확한 X-CSRF 토큰이

내 요청 헤더는 다음과 같습니다

{"_csrf_token"=>"UFhqJrlOA1c1sAPeUTtV/ABcq5IeqkfA842ORcIWwks=", "warden.user.donor.key"=>["Donor", [485], "$2a$10$OtkItrzVhN4Ussnqy5k1Au"], "session_id"=>"e6693e22275385a58e0915538791ea49"} 

이것은 csrf_token 나에게 나타냅니다 : 관련 컨트롤러 액션 내에서

Host localhost:3000 
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:6.0) Gecko/20100101  Firefox/6.0 
Accept */* 
Accept-Language en-us,en;q=0.5 
Accept-Encoding gzip, deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Connection keep-alive 
Content-Type application/x-www-form-urlencoded; charset=UTF-8 
X-Requested-With XMLHttpRequest 
x-csrf-token UFhqJrlOA1c1sAPeUTtV/ABcq5IeqkfA842ORcIWwks= 

, 세션 값을보고, 나는 다음과 같은 발견 예상 값과 일치합니다. 그러나 current_donor는 nil로 유지됩니다.

이 게시물에 대한 여러 게시물을 읽었으며 처음에는 csrf_meta_tag 메서드가 내 레이아웃에없고 csrf 토큰이 설정되지 않았습니다.

그러나 더 이상 그런 경우가 아니며 csrf 토큰이 설정되지만 아직 current_donor 값을 얻지 못하고 있습니다.

ajax get 요청을하면 current_donor가 올바르게 설정됩니다.

내가보아야 할 부분에 대한 조언은 크게 감사하겠습니다.

최저

, 톰

+1

이 똑같은 문제가 있습니다. 마침내 해결 했습니까? – anders

+0

같은 문제, Rails 4.1.6 및 Devise 3.4.1. 어떤 해결책? – Frexuz

답변

9

나는 이전과 같은 문제가 있었다. 아래의 csrf_token을 포함하여 해결했습니다.

$.ajax({ 
    type: "GET", 
    url: url, 
    data: params , 
    beforeSend: function(jqXHR, settings) { 
     jqXHR.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content')); 
    }, 
    error: function(){ 
     alert("An error ocurred"); 
    }, 
    success: function(){ 

    } 
}); 
관련 문제