gpt4 book ai didi

ruby-on-rails - 设计在 XHR 上抛出 HTTP 身份验证并注销

转载 作者:行者123 更新时间:2023-12-01 02:49:38 24 4
gpt4 key购买 nike

我在使用 OmniAuth 对我的 Rails 应用程序进行身份验证时遇到了大量问题。我重新启动我的服务器并在隐身模式下打开一个新选项卡(以便清除 cookie)并加载我的应用程序。我登录,然后进入应用程序。

当我到达通过 AJAX 调用经过身份验证的操作的页面时,它会通过 HTTP 基本身份验证要求输入用户名和密码。我已在 中禁用此功能devise.rb .

config.http_authenticatable = false
config.http_authenticatable_on_xhr = false

当我返回上一页时,它会将我重定向到登录页面并要求登录。当我访问不需要身份验证的页面然后返回到经过身份验证的页面时,也会发生这种情况。

这变得非常令人沮丧。我已将 Devise 和 Warden 解压到我的 供应商/ gem 目录,以便我可以尝试调试它,但老实说我不知道​​从哪里开始。任何帮助将不胜感激。

最佳答案

您的 AJAX 调用可能没有设置 CSRF token 。您可能需要更新您的 UJS gem(可能是 jquery-rails)或手动将 X-CSRF-Token HTTP header 设置为标记的值。看到这个问题:Devise session immediately expiring on .js call [AJAX] .您可以通过卡盘 config.allow_forgery_protection = false 暂时禁用 CSRF 保护来测试这是否是问题所在。在 config/application.rb .

如果您走手动路线,您可能应该首先获取“authenticity_token”元标记的值,并将其用作实际 token 元标记的名称,而不是硬编码对“csrf-token”的引用。

如果可以,我建议更新到 Rails 3.0.10 或 3.1。我在 3.0.7 上仍然有问题。

关于ruby-on-rails - 设计在 XHR 上抛出 HTTP 身份验证并注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5897060/

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