在Rails应用程序中执行“记住我”

我的Rails-app有一个带有“记住我”复选框的签到框。 在关闭浏览器后,还需要继续访问检查该框的客户。 我通过在客户会话中保存他们的ID来跟踪客户是否被访问。

然而会话在Rails中应用为会话cookie,而不是无情的。 我可以 使 他们无情:

class ApplicationController < ActionController::Base
  before_filter :update_session_expiration_date

  private

  def update_session_expiration_date
    options = ActionController::Base.session_options
    unless options[:session_expires]
      options[:session_expires] = 1.year.from_now
    end
  end
end

然而,这感觉就像一个黑客,这对于这种通常的能力是令人震惊的。 存在任何更好的手段?

修改

Gareth的解决方案是值得尊敬的,但我仍然可以解决一个习惯于Rails 2的人的解决方案(因为它是独一无二的CookieSessionStore)。

0
2019-05-03 17:53:41
资源 分享
答案: 3

restful_authentication插件具有出色的执行:

http://agilewebdevelopment.com/plugins/restful_authentication

0
2019-05-17 00:15:34
资源

这是对一个人开发30天无情会议经历的可敬的写作。

小心:帖子是从2006年开始的

http://grahamglass.blogs.com/main/2006/05/rails_sessionsr.html

0
2019-05-09 08:28:27
资源

您可能不会将会话cookie扩展为冗长的生命。

虽然没有专门处理rails 本文,但大多数人可能会在一定程度上澄清“记住我”的理想技巧。

回顾一下,你需要:

  • 向customer表添加一个添加的列以批准一个巨大的任意值
  • 在客户上设置一个冗长的cookie,其中包含客户ID和任意值
  • 当新会话开始时,查找是否存在id / value cookie,并确认新客户是否匹配。

作者还建议撤销任意值,并在每次登录时重置cookie。 直接我不会那样,因为你之后无法保持记录在2个计算机系统上的网站。 我当然经常倾向于看到我的密码转换功能另外重置任意值因此关闭各种其他设备上的会话。

作为最后一点,他提供的关于确保车辆确认会话无法访问的功能(密码更改/电子邮件调整等)的建议非常值得坚持,但在现实生活中几乎没见过。

0
2019-05-07 16:37:23
资源