2012-03-13 44 views
3

my Rails app中的2個地方有ajax調用。 (一個用於jQueryUI拖放排序,另一個用於更新評論帖子)。Ajax PUT請求導致在Rails應用程序中註銷。爲什麼?

只要發生這些調用,用戶就會註銷。沒有明顯的原因。 我使用omniauth-facebook和omniauth-google-oauth2進行身份驗證。

這怎麼得到修復?

這裏的Ajax調用的樣子(CoffeeScript的):

$.ajax({ 
    type: 'put', 
    data: {post_id: post.attr("id")}, 
    dataType: 'json', 
    complete: -> post.children('.headpost').children('.buttons').removeClass('new_reply'), 
    url: '/posts/update/'}) 

謝謝!

+0

HTTP:/ /weblog.rubyonrails.org/2011/2/8/csrf-protection-bypass-in-ruby-on-rails/ 好吧,會話重置,因爲我的ajax請求沒有真實性標記。現在,如何做到這一點與資產coffeescript文件中的ajax請求... – Arcolye 2012-03-14 04:28:10

回答

3

我最終什麼事做:

在application.html.erb佈局頭,下<%= csrf_meta_tags %>

<%= javascript_tag "var AUTH_TOKEN = '#{form_authenticity_token}';" if protect_against_forgery?%> 

在資產/ whatever.js.coffee

$.ajax ({ 
      type: 'put', 
      data: {authenticity_token: AUTH_TOKEN}, 
      dataType: 'json', 
      complete: -> post.children('.headpost').children('.buttons').removeClass('new_reply'), 
      url: '/posts/'+post.attr("id").slice(5) }); 
+0

感謝http://stackoverflow.com/questions/7560837/proper-way-to-send-an-authenticity-token-with-ajax – Arcolye 2012-03-14 04:55:01

相關問題