Lee*_*lla 6 session ruby-on-rails ruby-on-rails-3
在用户登录并且他们的用户名已经过身份验证并保存在会话[:user_name]中之后,当使用method ="post"(使用标准html)提交表单时,将清除所有会话数据并将用户路由回登录页面.如果方法设置为get,则不会发生这种情况.
当我使用导轨"form_tag"生成这些额外的行时,后期工作:
<div style="margin: 0pt; padding: 0pt; display: inline;">
<input type="hidden" value="?" name="utf8">
<input type="hidden" value="a_bunch_of_gibberish" name="authenticity_token">
</div>
Run Code Online (Sandbox Code Playgroud)
怎么了?
你在使用Rails 3.0.4吗?听起来它可能与CSRF修复有关.
如果您需要特定于您需要的修补程序,则可以在控制器中覆盖#handle_unverified_request.请参阅https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/request_forgery_protection.rb.
这是OmniAuth和OpenId这个问题的一个例子.(参见"Rails 3.0.4中的CSRF保护"一节)
如果您要创建自己的html表单,也会发生此问题.
如果你在不知道原因的情况下被重定向,那是因为ApplicationController中的"protect_from_forgery"
为了允许您的表单发布,请将以下代码添加到其中(或使用form_tag,下面的说明):
<form ... >
...
<%= hidden_field_tag "authenticity_token", form_authenticity_token %>
...
</form>
Run Code Online (Sandbox Code Playgroud)
"form_tag"工作的原因是因为form_tag为您生成隐藏字段=)
| 归档时间: |
|
| 查看次数: |
3772 次 |
| 最近记录: |