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