2013-05-12 81 views
1

我已将dotPay集成到我的Spree网站进行付款。选择此选项后,用户将从我的网站重定向到dotPay。他在那里支付所需的费用,然后他可以点击一个按钮,将其返回到我的网站。这里解决了这个问题。当他返回时,他不再登录,我需要他。rails 3返回网站用户登出

有点奇怪的事情(对我来说)他正在通过POST请求重定向 - 无法改变这一点。有了这个我也得到了一个警告Can't verify CSRF token authenticity不知道这可能与它有任何关系。

任何建议都非常受欢迎。

P.S.我正在使用Spree 1-3稳定版,Rails 3.2.13,Devise 2.2.3,Ruby 1.9.3

+0

确认你在PARAMS发送'authenticity_token'。如果没有,Rails认为你正在进行CSRF攻击,这就是重定向的原因。 – shime 2013-05-12 20:10:44

回答

0

那么,最后我最终取消了CSRF验证。我不是100%确定的,但我无法将authenticity_token发送给dotPay(嗯,我可以,但他们不会退还)。但是,他们正在生成一个md5,我可以检查并检查来自哪里的IP地址。

+0

您只能为用户完成付款并返回您的网站而触发的控制器操作制定例外。没有意义,禁用它在整个网站。 – Lambart 2013-10-29 20:06:36

1

对于具体的操作,您可以禁用CSRF检查,加入这样一行到控制器:

protect_from_forgery :except => [:callback_from_dotpay] 

相反,你可以指定哪些动作保护,就像这样:

protect_from_forgery :only => [:create, :update, :delete] 

或者,要完全关闭整个控制器,可以这样做(Rails 2,3):

skip_before_filter :verify_authenticity_token 

如果你决定要跳的前沿,轨道4要你做这种方式:

skip_before_action :verify_authenticity_token