jQuery Ajax调用Rails 3获得401 Unauthorized Request

时间:2011-11-10 20:56:04

标签: jquery ruby-on-rails ajax

我有一个使用devise进行身份验证的Rails 3.1应用程序。我正试图通过ajax拨打电话到网址。出于某种原因,我一直获得401 Unauthorized访问权限。我已经按照这里的教程http://henrik.nyh.se/2008/05/rails-authenticity-token-with-jquery了解了如何验证jQuery请求。请求的代码是

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

奇怪的是,我在服务器上看到了

于11月10日星期四15:51:33 -0500开始获取“/chromosomes.json?sequence_start=10&sequence_end=100&_=1320958293654”为127.0.0.1   由ChromosomesController处理#index为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!在过滤之前它工作正常!?很感谢任何形式的帮助。谢谢!

2 个答案:

答案 0 :(得分:4)

我通过在我的用户模型中添加:token_authenticatable来修复此问题。这允许用户通过会话令牌进行身份验证。

答案 1 :(得分:0)

我正在使用angularjs开发REST请求,因此我使用ng-rails-csrf gem在发送给身份验证的每个ajax请求中添加csrf令牌。