我在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>
答案 0 :(得分:3)
2.3.9中存在错误。它阻止在使用activerecord或memcache会话存储时设置会话ID。见rails ticket。您可以使用http://gist.github.com/570149
处的Mislav补丁修复它。您必须在config/initializers/sessions_patch.rb
中创建并粘贴代码。或者,您可以在项目根路径中运行以下命令:
wget http://gist.github.com/570149.txt -O config/initializers/sessions_patch.rb
最后不要忘记重新启动服务器(也许可以发出rake db:sessions:clear
)。
答案 1 :(得分:2)
答案 2 :(得分:0)
您是否尝试过清除浏览器的浏览数据?很可能它仍在发送旧的AuthenticityToken。