Rails会话重置

时间:2011-04-24 06:46:42

标签: jquery ruby-on-rails session csrf-protection

我遇到了一个奇怪的问题。我最近检测到通过AJAX发布的文本字段给出了错误。经过调查,我发现会话被重置为此POST AJAX请求。我认为必须是csrf问题。我检查了令牌,它正在布局文件中正确传递:

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

我的AJAX请求如下:

 <script type="tex/javascript">
            $(document).ready(function(){
                    $("#post_msg").click(function(){
                            var update = $("#msg").val();
                            var authenticity_token = AUTH_TOKEN;
                            $.ajax({
                                    type: "POST",
                                    url: "/messages.js",
                                    data: "msg[text]="+escape(msg) + "&_csrf_token="+encodeURIComponent(authenticity_token),
                                    dataType: "json",
                                    success: function(msg){
                                      // Code to append the msg to DOM
                                    )

但是在调试器中,我注意到csrf令牌与散列中已有的令牌不同。我无法理解这一切。可能是这一切的原因是什么?

1 个答案:

答案 0 :(得分:0)

在我正在使用的Rails 3应用程序中,令牌名称为authenticity_token,并且在POST之前不会对实际令牌本身进行编码。