2011-07-25 72 views
1

嗨我正在创建一个项目,我使用OmniAuth对用户进行身份验证。它的工作正常,除了我的应用程序,我想通过使用POST通过JavaScript发送信息到服务器。我发现如果我使用POST发送请求,我发现它找不到用户 - (我相信当我浏览时,request.env [“omniauth.auth”]变量也不存在断点)。OmniAuth身份验证后通过POST与Rails应用程序进行通信

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

什么是正确的用法,也许我有一个不正确的路线?我也不确定使用'_method' - 会有帮助吗?也许我只是看错了方向?

如何通过POST发送的JavaScript认证后OmniAuth,仍然检索CURRENT_USER

+0

如果我关闭protect_from_forgery,它会使用POST返回有效的信息,如果它流出一些光 – Onedayitwillmake

回答

1

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

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

在这个方法,你可以实现逻辑到白名单的请求,并让Rails的忽略防伪保护。

相关问题