【问题标题】:Devise authentication to maintain existing session data设计身份验证以维护现有会话数据
【发布时间】:2023-03-18 19:35:02
【问题描述】:

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

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

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

上下文轨道 3.2.18,设计 2.2.4

【问题讨论】:

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


    【解决方案1】:

    可以覆盖会话控制器。鉴于此上下文有 2 个上下文不同的入口点(generic_url 与 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

    的指针

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 2019-01-29
      • 2012-02-29
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      相关资源
      最近更新 更多