I use the squeeze-backport of redmine on Debian.

With the default setup, all the Ajax-Post-Requests cause the logout of the current user due to the missing X-CSRF-Token.

Because I could not find a complete solution, I backported the CSRF-Code from a newer relase.

Step 1: Replace public/javascripts/application.js

Replace the existing file with the one from: http://www.redmine.org/projects/redmine/repository/revisions/7926/entry/trunk/public/javascripts/application.js#L337

Step 2: Add CSRF-Token to in app/views/layouts/base.rhtml

<meta name="keywords" content="issue,bug,tracker" />
<%= csrf_meta_tag %>
<%= favicon %>

Step 3: Create the csrf-Helper app/helpers/csrf_helper.rb

module ActionView
  # = Action View CSRF Helper
  module Helpers
    module CsrfHelper
      # Returns meta tags "csrf-param" and "csrf-token" with the name of the cross-site
      # request forgery protection parameter and token, respectively.
      #
      # <head>
      # <%= csrf_meta_tags %>
      # </head>
      #
      # These are used to generate the dynamic forms that implement non-remote links with
      # <tt>:method</tt>.
      #
      # Note that regular forms generate hidden fields, and that Ajax calls are whitelisted,
      # so they do not use these tags.
      def csrf_meta_tags
        if protect_against_forgery?
          [ 
            tag('meta', :name => 'csrf-param', :content => html_escape(request_forgery_protection_token) ),
            tag('meta', :name => 'csrf-token', :content => html_escape(form_authenticity_token) )
          ].join("\n")
        end
      end

      def html_escape(s)
         s.to_s.gsub(/[&"><]/) { |special| HTML_ESCAPE[special] }
      end

      # For backwards compatibility.
      alias csrf_meta_tag csrf_meta_tags
    end
  end
end

Sources