代码之家  ›  专栏  ›  技术社区  ›  Marc Vitalis

actionController::SessionController中的InvalidAuthenticityToken创建错误

  •  1
  • Marc Vitalis  · 技术社区  · 14 年前

    我在Rails 2.3.9中得到这个错误,但在2.3.8中没有。我没有更改任何代码。我错过什么了吗?

    ActionController::InvalidAuthenticityToken in SessionsController#create ActionController::InvalidAuthenticityToken
    

    谢谢)

    以下是添加的详细信息。

    Request
    
    Parameters:
    
    {"commit"=>"Login",
     "authenticity_token"=>"A9A4+sCsA/81FFoXJEUNziQYhgQ38pceGN2i7MUQbQY=",
     "password"=>"r3dp0rt"}
    

    这是应用程序控制器中的代码

    class ApplicationController < ActionController::Base
      helper :all # include all helpers, all the time
      protect_from_forgery :secret => "r3dp0rtP@$$", :digest => "MD5" # See ActionController::RequestForgeryProtection for details
    

    这是我的会话创建控制器的代码

      def create
        session[:password] = params[:password]
        flash[:notice] = "Sucessfully logged in"
        redirect_to "/login"
      end
    

    最后,这是我简单登录视图中的代码

    <div id="placeholder">
      <% form_tag :action => "create" do %>
        <p>
        <%= label_tag "This will enable administrative features for the site." %><br>
        <%= password_field_tag "password" %>
        </p>
        <br>
        <p>
        <%= submit_tag "Login" %>
        </p>
      <% end %>
    </div>
    
    3 回复  |  直到 13 年前
        1
  •  3
  •   Cédric Darné    14 年前

    2.3.9中有一个错误。它防止在使用ActiveRecord或Memcache会话存储时设置会话ID。看到这个 rails ticket . 你可以使用mistrav的补丁修复它 http://gist.github.com/570149 . 您必须创建并粘贴代码 config/initializers/sessions_patch.rb . 或者可以在项目根路径中运行以下命令:

    wget http://gist.github.com/570149.txt -O config/initializers/sessions_patch.rb
    

    最后,不要忘记重新启动服务器(可能是问题A rake db:sessions:clear )

        2
  •  2
  •   Jeff Steil    13 年前

    我没有足够的分数对接受的答案发表评论,因此我将添加此作为答案。补丁确实有效,但要小心命名 sessions_patch.rb 所以它将按字母顺序排列在 session_store.rb . 当我发现困难的方法(错误地命名补丁 session_patch.rb ,初始值设定项的顺序很重要,如果在设置密钥和机密之前加载补丁,则补丁将无法工作。 会话存储.rb . 希望这能节省一些时间。

        3
  •  0
  •   Sebastian    14 年前

    您是否尝试清除浏览器的浏览数据?很可能它仍在发送旧的authentitytoken。