aboutsummaryrefslogblamecommitdiffstats
path: root/actionview/lib/action_view/helpers/csrf_helper.rb
blob: d07115a5ee3e3918e862ea1ff9d1df047243bca5 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                 
                             

                     









                                                                                         




                                                                                                         
                        

                                   

                                                                                       

                                
         


                                        


       
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>.
      #
      # You don't need to use these tags for regular forms as they generate their own hidden fields.
      #
      # For AJAX requests other than GETs, extract the "csrf-token" from the meta-tag and send as the 
      # "X-CSRF-Token" HTTP header. If you are using jQuery with jquery-rails this happens automatically.
      #
      def csrf_meta_tags
        if protect_against_forgery?
          [
            tag("meta", name: "csrf-param", content: request_forgery_protection_token),
            tag("meta", name: "csrf-token", content: form_authenticity_token)
          ].join("\n").html_safe
        end
      end

      # For backwards compatibility.
      alias csrf_meta_tag csrf_meta_tags
    end
  end
end