javascript – 在浏览器重新启动之间保持rails会话的最简单方法

实现cookie的最简单方法是什么,以便在浏览器重启之间会话持续存在?
最佳答案
最好的办法是使用所谓的记住我的cookie.由于会话cookie在浏览器重新启动之间不会持续存在,因此您需要使用其他类型的cookie,向您的应用程序指出用户是他们所说的用户.最常见的是记住我的功能是通过让用户选择他们希望应用程序记住它们来实现的.然后,您需要创建一个cookie作为该用户的密码.通常,您希望执行以下操作:

>选择与用户无法访问或查看的用户相关的属性.例如,创建帐户的时间,或者为其存储的随机生成的字符串.
>散列此属性,使cookie值无法识别.

这是一个例子:

identifier = current_user.id
value = Digest::SHA1.hexdigest(current_user.created_at)[6,10]

cookies['remember_me_id'] = {:value => identifier, :expires => 30.days.from_now}
cookies['remember_me_key'] = {:value => value, :expires => 30.days.from_now}

最后,当您检查用户是否已登录时,您还需要使用记忆cookie检查他们是否已登录.例如:

def current_user
  current_user ||= login_from_session || login_from_cookie
end

def login_from_session
  current_user = User.find(session[:id]) unless session[:id].nil?
end

def login_from_cookie
  user = User.find(cookies['remember_me_id'])
  if cookies['remember_me_key'] == Digest::SHA1.hexdigest(user.created_at)[6,10]
    current_user = user
  else
    nil
  end
end

这应该让您开始实现在浏览器重启之外持久存在的cookie.

转载注明原文:javascript – 在浏览器重新启动之间保持rails会话的最简单方法 - 代码日志