如何检查用户是否刚开始新会话?

时间:2015-10-31 04:43:52

标签: ruby-on-rails ruby session http-headers http-referer

我想确定用户是否刚刚在我的Rails应用中启动了新会话。我目前正在使用HTTP referer来定义新会话的内容。但我不确定这是不是正确的方法。以下代码是用Ruby编写的。

if !request.referrer || !request.referrer.start_with?(request.protocol + request.host_with_port)
  # If the user came from another site or came here directly, then we regard it as a new session
else
  # Not a new session
end

1 个答案:

答案 0 :(得分:0)

您可以在用户首次访问时在会话中存储属性。如果设置了属性,那么您可以安全地断定他们之前访问过您的网站。

但是,如果未设置该属性,那么它可能意味着许多事情:

  • 用户第一次访问您的网站
  • 用户可能已删除了他们的Cookie,而您无法判断他们是否正在返回
  • 用户也可以从不同的浏览器或不同的设备访问

这是你编码的方式

if session.has_key?(:visited_before)
  # user has visited before
else
  # new user
  session[:visited_before] = true
end

你应该警惕

  • 存储会话的地方和内存限制,但我不会让这阻止你开始,除非它是一个高流量的网站。
  • googlebot和其他搜索引擎抓取工具,您可以检测用户代理标头中的那些并避免设置会话。