Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在岗位上设计擦洗课程?_Ruby_Ruby On Rails 3_Devise_Ruby On Rails Plugins - Fatal编程技术网

Ruby 在岗位上设计擦洗课程?

Ruby 在岗位上设计擦洗课程?,ruby,ruby-on-rails-3,devise,ruby-on-rails-plugins,Ruby,Ruby On Rails 3,Devise,Ruby On Rails Plugins,我已经设置了Desive和基于omniauth的身份验证,它在大多数情况下都运行良好。登录后,我设置了当前\u用户并在\u过滤器之前使用:验证\u用户它主要按照预期工作。即使我(手动)转到其他站点,会话也会保持不变。当我回到我的网站,我仍然登录 我在尝试与支付网关提供商集成时遇到问题 我向支付网关发送一个表单帖子,支付网关完成它的工作,然后通过发送表单帖子将用户返回到我的站点。当用户登陆我的站点时,cookies将被清除,身份验证将丢失。这意味着当前用户现在为零 这种流动有点像 Order -

我已经设置了Desive和基于omniauth的身份验证,它在大多数情况下都运行良好。登录后,我设置了
当前\u用户
并在\u过滤器之前使用
:验证\u用户它主要按照预期工作。即使我(手动)转到其他站点,会话也会保持不变。当我回到我的网站,我仍然登录

我在尝试与支付网关提供商集成时遇到问题

我向支付网关发送一个表单帖子,支付网关完成它的工作,然后通过发送表单帖子将用户返回到我的站点。当用户登陆我的站点时,cookies将被清除,身份验证将丢失。这意味着
当前用户现在为零

这种流动有点像

Order - > Login -> Confirm -> PaymentGateway -> CallBack(MySite) 
   |                 ^
   | -- loggedin --  |
    -----------------
我进一步研究了使用Firefox的inspect,看起来cookies设置正确。例如,在我登录后,cookie是
\u session\u id:F58B52E6C168178711BA66A3AC9D637
,当我从支付网关返回时,cookie(根据firefox)是
\u session\u id:F58B52E6C168178711BA66A3AC9D637
。。这会让我相信我会保持身份。但是,当我打印当前用户时,我得到零

我也在控制器中打印cookie,它是正确的:

在我打印收到的Cookie时的确认操作中

Cookies#“f58b52e6c168178711ba66aa3ac9d637”}>

在回调(MySite)页面中,如果我打印cookies,我会得到

Cookies{:path=>“/”}、@host=“localhost”、@secure=true、@closed=false、@Cookies={“\u session\u id”=>“F58B52E6C168178711BA66A3AC9D637”}>

我错过了什么。为什么Desive故意让我退出。有没有办法让我保持登录状态

编辑:

我也试着回忆。。。这也不起作用,会擦掉饼干

在我打印收到的Cookie时的确认操作中

Cookies#“f63c3165f807b15e4a4e7de4a615d012”,“记住用户令牌”=>“bahb1sgaqyiiiqyyqxmcrxvgjovzeydjjtq1y4duetdjmvp1--099213f62d5e317d9f83e758ac5995395e63ce7f”>

请注意,
记住用户令牌
已设置

在回调(MySite)页面中,如果我打印cookies,我会得到

{:path=>“/”}、@host=“localhost”、@secure=true、@closed=false、@cookies={“\u session\u id”=>“f63c3165f807b15e4a4e7de4a615d012”}>

因此,一个before过滤器已经删除了
记住用户\u令牌
cookie,在firefox的inspect中,我可以确认这两个cookie都被发送到了站点和rails


无论哪种方式,当传入的操作是来自外部站点的帖子时,Desive都会将我注销。这是预期的行为,我可以改变它吗

当外部网站发布时,您需要禁用来自伪造保护的请求(或针对该特定操作),否则Rails针对CSRF攻击的保护机制将(正确)使您注销。

当外部网站发布时,您需要禁用来自伪造保护的请求(或针对该特定操作),否则Rails针对CSRF攻击的保护机制将(正确)让您注销。

谢谢!尝试了这么多不同的事情。忘记了CSRF。谢谢!尝试了这么多不同的事情。忘记了CSRF。