gpt4 book ai didi

ruby-on-rails - 设计在帖子上登出到不同的路线

转载 作者:行者123 更新时间:2023-12-03 23:23:48 24 4
gpt4 key购买 nike

我在设计方面遇到了一个非常奇怪的问题。我设置了一个接受 get 和 post 请求的路由。在 get 上,它显示表单,在 post 上,它提交它。

当我向路由发送一个帖子 XHR 时,当它到达那里时,它告诉我我没有登录,并向我发送未经授权的 401。之后我必须登录,然后我可以再试一次。

几个小时以来,我一直试图弄清楚这一点,我所能弄清楚的是我的 Controller 方法没有被调用。我在过滤器之前输入了我自己的自定义身份验证,它只是确认当我的 rails 应用程序被调用时,用户不再登录。

另外,如果我打开表单,但不提交,我可以继续照常进行。在那个 XHR 的某个地方,它正在使设计注销我。

如果您有任何想法,请帮助,我不知道现在发生了什么......

谢谢

-斯科特

编辑:添加相关的代码段

路由文件

match 'projects/:p/filebox' => 'projects#show', :via => ["get","post"], :as => 'project_filebox'

project_controller.rb
before_filter :authenticate_user! # <--- By the time this gets called, the user is logged out
def show
# ^^^^ Doesnt get called. Logger shows that it recognized route though
logger.debug "-----------projects#show"
logger.debug "Current user logged in:"+user_signed_in?.to_s

正在提交的表格
<form class="upload" action="<%= project_filebox_path(@project) %>?n=7&cType=<%= cType %>&fid=<%= fid %>" method="post" enctype="multipart/form-data">
<input type="file" name="file" multiple/>
<button>Upload</button>
<div>Add / Drag Files To Upload</div>
</form>

正在上传 XHR 的 Javascript
formDataUpload = function (files, xhr, settings) {
var formData = new FormData(),
i;
$.each(getFormData(settings), function (index, field) {
formData.append(field.name, field.value);
});
for (i = 0; i < files.length; i += 1) {
formData.append(settings.fieldName, files[i]);
}
xhr.send(formData);
}

如果我错过了一些相关的代码,请告诉我

最佳答案

除了 JS 之外,这里没有太多可做的事情,但是您遇到的问题确实发生了很大的变化,因为 CSRF token 没有被设置为您的请求的一部分。这在各种 Rails 3.0.x 版本中发生了变化,如果没有代码就很难确定。

一种简单的测试是关闭 CSRF(例如,从 ApplicationController 中删除protect_from_forgery)。如果它有效,你就有了答案,需要确保 token 被传递,或者你以其他方式处理伪造保护。

关于ruby-on-rails - 设计在帖子上登出到不同的路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6128495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com