【问题标题】: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
的指针