如何通过用户注册保留会话数据

时间:2011-01-02 21:58:53

标签: ruby-on-rails authentication ruby-on-rails-3 authlogic session-variables

我使用AuthLogic来激活/验证新用户,我当前正在使用会话数据,因此系统知道在激活后将新用户发送到哪里(例如显示它们的项目)。因此,它使用了许多变量,例如session [:project_id],当用户第一次激活他们的帐户时,需要存在这些变量。

问题是这样 - 如果用户激活时会话数据不存在会发生什么?一些案例:

  • 用户在一个浏览器上注册,但随后在另一个浏览器上打开他们的激活电子邮件,
  • 用户使用隐身模式注册/激活
  • 用户在激活帐户前等待一两天。

据我所知,使用会话数据会出现UX漏洞,因为当它不存在时,用户最终会处于无用的位置(或者更糟糕的是,由于期望会话变量不存在而导致500错误)

在我看来,必须将诸如project_id(以及一些其他变量)之类的信息从注册到激活可靠地存储。我担心为这个有限和临时目的创建新的数据库字段,但我对所有建议持开放态度。我该怎样关闭这个漏洞?


回应奥马尔的回答:

在UserMailer.rb中,我定义了activation_instructions(user),它将activation_instructions电子邮件发送给新用户。目前,我看到以下内容:

def activation_instructions(user)
  @user = user
  @account_activation_url = activate_url(user.perishable_token)
  mail(:to => "#{user.login} <#{user.email}>", :subject => "Welcome!" )
end

如何将get参数添加到此?假设我有参数project_id和category_id?

1 个答案:

答案 0 :(得分:1)

您可以通过激活电子邮件将该参数作为get参数发送,这将解决所有三个问题,不是吗?