【问题标题】:rails not picking session datarails没有选择会话数据
【发布时间】:2011-04-12 15:34:16
【问题描述】:

我正在我的应用中实现支付网关。 就像这样: 用户在表单中填写必要的详细信息以及包含return_url(say @987654321@_payment/ebs_response?dr={somedata}) 的字段,然后将表单提交到安全支付站点。交易完成后,安全站点将一些加密数据放入我的参数 {dr} 中,并将用户重定向回返回 url。这里的问题是,当用户使用return_url返回应用程序时,应用程序无法获取会话数据并返回nil值。

在提交表单之前,我将对象@fdPaymentDets 放入会话中。

这是我的控制器:

class EbsPaymentController < ApplicationController
  #before_filter :login_required,:check_user_authenticate  
  #access_control [:ebs_response] => ('user')

  def ebs_response
    @fdPaymentDets = session["fd_payment_details"]

    @deal = Deal.find(@fdPaymentDets.deal_id)

    @categories = find_all_categories    
  end

  private
  def find_all_categories
     @sp = SitePreference.find(:first)
     Category.find(:all,:limit => @sp.categories_display_limit,:order => 'position')
  end

end

当用户从安全站点重定向到返回 url (http://myapp.com/ebs_payment/ebs_response?dr={encrypted_data}) 时,rails 不会从会话中选择 @fdPaymentDets 对象并将其设置为 nil,从而导致从 nil 访问数据时出错目的。

令人惊讶的是,当我在浏览器中手动输入相同的return_url 时,会话数据被巧妙地挑选出来,一切顺利。

这里有什么遗漏吗?明显的原因可能是什么? 任何帮助表示赞赏。

【问题讨论】:

  • 我观察到了同样的问题,希望我的问题或你的问题得到答案,这是非常严肃的事情。

标签: ruby-on-rails


【解决方案1】:

Cookie 和重定向很混乱且容易出错(从浏览器的实现角度来看)。 来看看

Safari doesn't set Cookie but IE / FF does

建议将实现更改为首先在显示操作中设置会话,然后在重定向之前更新值

【讨论】:

    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 2012-05-02
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    相关资源
    最近更新 更多