Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 设计在XHR上抛出HTTP身份验证并注销_Ruby On Rails_Devise_Omniauth_Warden - Fatal编程技术网

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

Ruby on rails 设计在XHR上抛出HTTP身份验证并注销,ruby-on-rails,devise,omniauth,warden,Ruby On Rails,Devise,Omniauth,Warden,我在使用OmniAuth对Rails应用程序进行身份验证时遇到了很多问题。我重新启动我的服务器,在匿名模式下打开一个新标签(以便清除cookies),然后加载我的应用程序。我登录,然后进入应用程序 当我到达一个通过AJAX调用经过身份验证的操作的页面时,它会通过HTTP基本身份验证请求用户名和密码。我已在我的design.rb中禁用此功能 config.http_authenticatable = false config.http_authenticatable_on_xhr = false

我在使用OmniAuth对Rails应用程序进行身份验证时遇到了很多问题。我重新启动我的服务器,在匿名模式下打开一个新标签(以便清除cookies),然后加载我的应用程序。我登录,然后进入应用程序

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

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


这让人非常沮丧。我已将Desive and Warden解包到我的供应商/gems目录中,以便尝试调试它,但老实说,我不知道从哪里开始。非常感谢您的帮助。

您的AJAX调用可能没有设置CSRF令牌。您可能需要更新ujsgem(可能是jqueryrails),或者手动将X-CSRF-tokenhttp头设置为标记的值。请参见以下问题:。您可以通过在
config/application.rb
中夹住
config.allow\u forgery\u protection=false来临时禁用CSRF保护来测试这是否是问题

如果您选择手动方式,您可能应该首先获取“authenticity_token”元标记的值,并将其用作实际令牌元标记的名称,而不是硬编码对“csrf token”的引用


如果可以的话,我建议您升级到Rails 3.0.10或3.1。我在3.0.7上仍然有问题。

这可能不言而喻,但以防使用此答案的人。。。将config.allow\u forgery\u protection设置为false有助于进行故障排除,但决不应在生产环境中运行此设置。它会让你面临危险的CSRF攻击。