设计身份验证以维护现有会话数据

时间:2014-08-30 11:52:22

标签: session devise ruby-on-rails-3.2

应用程序允许用户进行生成会话数据的各种操作。然后,用户可能想要基于该数据执行交易。登录或注册是必要的。

不幸的是,Devise中的会话控制器创建了一个新会话,丢弃了所有数据。我还没有找到一种允许维护现有会话数据的简洁技术,因为这是将数据写入cookie的首选方法。

after_sign_in_path_for(resource)仅允许用户返回上一页

Context rails 3.2.18,设计2.2.4

1 个答案:

答案 0 :(得分:0)

可以覆盖会话控制器。鉴于此上下文具有2个上下文不同的入口点(generic_url vs confirm_transaction_url),可以继承以下各种参数设置,并且用户返回上一页/他正在使用

class SessionsController < Devise::RegistrationsController  

  def destroy
    param1       = session[:param1] unless     session[:param1].nil?
    param2       = session[:param2] unless     session[:param2].nil?
    confirm_url  = session[:confirm_url] unless  session[:confirm_url].nil?
    previous_url = session[:previous_url] unless session[:previous_url].nil?
    super  
    session[:param1] = param1
    session[:param2] = param2
    session[:confirm_url]  = confirm_url
    session[:previous_url] = previous_url
  end
end

应用程序控制器将路由用户

def after_sign_in_path_for(resource)
  session[:previous_url] || session[:confirm_url]
end

为了编制索引而发布的答案。感谢来自onemanarmy

的指针