ruby-on-rails - 为什么我无法拦截 401 并处理 AJAX 调用过期的会话?
问题描述
我目前正在研究遗留软件并遇到问题。当会话过期并提交了一个formtastic表单时,它会尝试转到inspections#create,并返回401并尝试呈现inspections#index。问题是检查#index 不存在。当会话在所有其他情况下到期时,它会重定向到登录页面。我的假设是,如果没有表单中的参数,它会误解为“/inspections/”的路径。在使用 Devise 时会话过期后,这似乎是 AJAX 调用的问题。
解决方案
抱歉,再请求一个 - 你能发布你的控制器/application.rb 吗?(可能在 /api/ 文件夹中)
看起来它实际上并没有对 InspectionController#create 做出反应 - 它只是调用可能在 application.rb 中的 Devise 包装器(或至少在那里引用)。
看起来您的身份验证模型不仅检查用户,还检查客户、版本和事件。其中之一是导致您的设计包装器未经授权返回。当它这样做时,它正在调用未定义的索引操作(似乎没有重定向,只是呈现)。
如果我可以看到控制器的身份验证包装器,我将能够提供更多
(对不起,这不是答案,但在我的声誉上升之前我不能发表评论)
推荐阅读
- ruby - Sinatra 根据请求安全地设置时区
- java - 如何找到在 Java 程序中创建的对象的数量?
- sql - 与贷款表的正确关系?
- php - 根据 WooCommerce 中的成本更改运输方式标签名称
- python - 确定哪个打印语句在终端中产生一行输出
- javascript - 如何避免 Jquery 将 `?` 翻译成 `%3F`
- kubernetes - 如何为我的整个集群创建一个入口,该入口可以自动使用 kube-dns 来实现到内部服务的基于路径的路由?
- css - 通过 pandoc&wkhtmltopdf 从 mkd 生成 pdf 时如何使用 css 设置页面/文档边距?
- c++ - 分支可能性提示是否通过函数调用进行?
- ffmpeg - 如何使用 ffmpeg 调整 h264 视频的大小?