我有一个使用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!在过滤之前它工作正常!?很感谢任何形式的帮助。谢谢!
答案 0 :(得分:4)
我通过在我的用户模型中添加:token_authenticatable来修复此问题。这允许用户通过会话令牌进行身份验证。
答案 1 :(得分:0)
我正在使用angularjs开发REST请求,因此我使用ng-rails-csrf gem在发送给身份验证的每个ajax请求中添加csrf令牌。