Ruby 在岗位上设计擦洗课程?
我已经设置了Desive和基于omniauth的身份验证,它在大多数情况下都运行良好。登录后,我设置了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 -
当前\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。