您好我正在创建一个项目,我使用OmniAuth对用户进行身份验证。它的工作正常,除了我的应用程序,我想通过javascript使用POST发送信息到服务器。
然而,当我调试应用程序时,我注意到如果我使用POST发送请求它找不到用户 - (我相信request.env [“omniauth.auth”]变量根据我浏览的时间不存在断点)。
我正在通过JSON将一些调试信息输出回应用程序。 当我将XMLHttpRequest更改为使用GET时,它可以正常工作,我会找回正确的信息。
什么是正确的用法,也许我的路线不正确?我也不确定使用'_method' - 这会有帮助吗?也许我只是在寻找错误的方向期?
如何在使用OmniAuth进行身份验证后通过javascript发送POST并仍然检索current_user
答案 0 :(得分:1)
所以问题在于protect_from_forgery的工作方式。您需要做的是验证您的请求是否安全并且应该忽略伪造保护,您可以通过实施forgery_whitelist来实现此目的吗?在您的ApplicationController类:
def forgery_whitelist?
request.user_agent ~= /iPhone/ || self.current_user || super
end
在此方法中,您可以实现逻辑以将请求列入白名单,并使Rails忽略伪造保护。