【问题标题】:Communicating with Rails application via POST after OmniAuth authenticationOmniAuth 身份验证后通过 POST 与 Rails 应用程序通信
【发布时间】:2011-07-25 10:31:21
【问题描述】:

您好,我正在创建一个使用 OmniAuth 对用户进行身份验证的项目。它工作正常,除了在我的应用程序中,我想使用 POST 通过 javascript 向服务器发送信息。

但是,当我调试应用程序时,我注意到如果我使用 POST 发送请求,它找不到用户 - (我相信 request.env["omniauth.auth"] 变量在我浏览时也不存在断点)。

我正在通过 JSON 将一些调试信息输出回应用程序。 当我将 XMLHttpRequest 更改为使用 GET 时,它可以工作并且我会返回正确的信息。

什么是正确的用法,也许我的路线不正确?我也不确定是否使用 '_method' - 这有帮助吗?也许我只是在寻找错误的方向?

如何在使用 OmniAuth 进行身份验证后在 javascript 中通过 POST 发送并仍然检索 current_user

【问题讨论】:

  • 如果我关闭protect_from_forgery,它确实会使用POST返回有效信息,如果这会有所启发

标签: ruby-on-rails post omniauth


【解决方案1】:

所以问题在于protect_from_forgery 的工作方式。您需要做的是验证您的请求是安全的,并且应该忽略伪造保护,您可以通过实现 forgery_whitelist 来做到这一点?在您的 ApplicationController 类中:

def forgery_whitelist?
  request.user_agent ~= /iPhone/ || self.current_user || super
end

在这种方法中,您可以实现将请求列入白名单并使 Rails 忽略伪造保护的逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2017-03-03
    • 2014-09-04
    相关资源
    最近更新 更多