首页 > 解决方案 > 为什么我无法拦截 401 并处理 AJAX 调用过期的会话?

问题描述

我目前正在研究遗留软件并遇到问题。当会话过期并提交了一个formtastic表单时,它会尝试转到inspections#create,并返回401并尝试呈现inspections#index。问题是检查#index 不存在。当会话在所有其他情况下到期时,它会重定向到登录页面。我的假设是,如果没有表单中的参数,它会误解为“/inspections/”的路径。在使用 Devise 时会话过期后,这似乎是 AJAX 调用的问题。

标签: ruby-on-railsrubysessiondevise

解决方案


抱歉,再请求一个 - 你能发布你的控制器/application.rb 吗?(可能在 /api/ 文件夹中)

看起来它实际上并没有对 InspectionController#create 做出反应 - 它只是调用可能在 application.rb 中的 Devise 包装器(或至少在那里引用)。

看起来您的身份验证模型不仅检查用户,还检查客户、版本和事件。其中之一是导致您的设计包装器未经授权返回。当它这样做时,它正在调用未定义的索引操作(似乎没有重定向,只是呈现)。

如果我可以看到控制器的身份验证包装器,我将能够提供更多

(对不起,这不是答案,但在我的声誉上升之前我不能发表评论)


推荐阅读