在OmniAuth身份验证后通过POST与Rails应用程序通信

时间:2011-07-25 00:25:44

标签: ruby-on-rails post omniauth

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

然而,当我调试应用程序时,我注意到如果我使用POST发送请求它找不到用户 - (我相信request.env [“omniauth.auth”]变量根据我浏览的时间不存在断点)。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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