2011-11-10 5 views
2

나는 devise를 인증에 사용하는 Rails 3.1 애플리케이션이있다. 나는 ajax를 통해 URL에 전화를 걸려고 노력하고있다. 웬일인지 나는 401 권한이없는 접근을 계속하고있다. jQuery 요청을 인증하는 방법은 여기 http://henrik.nyh.se/2008/05/rails-authenticity-token-with-jquery 자습서를 따랐습니다. 요청에 대한 코드는 무엇 이상한 것은 서버에 내가 jQuery Ajax에서 Rails 3 호출 401 권한이없는 요청 받기

가 GET 시작 볼 수 있다는 것입니다

 $.get('/chromosomes.json', {sequence_start: '10', sequence_end: '100'}, 
     function(data){ 
         alert(data) 
     }, 'json'); 

이다 "/chromosomes.json?sequence_start=10 & sequence_end = 100 & _ = 1320958293654"127.0합니다. 0.1 at Thu Nov 10 15:51:33 -0500 2011 ChromosomesController # index as JSON으로 처리 {{sequence_start "=>"10 ","_ "=>"1320958293654 ","sequence_end "=>"100 "} 10ms 완료

내 컨트롤러에 있음 :

before_filter :authenticate_user! 

def index 

     respond_to do |format| 
     format.html 
     format.json { render :json => @chromosomes } 
    end 
end 

어떤 이유로 진위성 세션 토큰이 Rails로 전달되지 않습니다. authenticate_user를 제거하면! 필터가 작동하기 전에 잘 작동합니다!? 어떤 도움이라도 대단히 감사합니다. 감사!

+0

컨트롤러에 무엇이 있습니까? –

+0

respond_to do | 형식 | format.html format.json {render : json => @chromosomes} end –

+0

nah - "인증되지 않은"응답이 표시됩니다. before_filters가 실행중인 항목을 표시해야합니다. –

답변

4

token_authenticatable을 내 사용자 모델에 추가하여이 문제점을 해결했습니다. 이렇게하면 세션 토큰별로 사용자를 인증 할 수 있습니다.

0

나는 angularjs를 사용하여 REST 요청을 보내고 있습니다. 따라서 ng-rails-csrf gem을 사용하여 인증을 위해 전송 된 모든 아약스 요청에 csrf 토큰을 추가하십시오.