如何在Ruby中使用cookie保存持久会话?

时间:2014-04-14 00:30:01

标签: ruby session cookies cgi persistence

我正在寻找的东西非常简单。我想检查客户端是否在浏览器中有我的cookie。如果是,则从cookie加载最后一个会话ID并从服务器端访问会话。如果不是,我想创建服务器端会话并将会话ID存储到cookie。

所以我的问题是两部分。会话代码/变量/ ID的哪些部分与将来检索它有关?什么是通过cookie / session实现连续会话的简单方法?

我没有使用rails。这是一个标准的CGI脚本。


#!/usr/bin/ruby
require 'cgi'
require 'cgi/session'
require 'cgi/session/pstore'

cgi = CGI.new("html4")

# !! TODO !! if cookie has "session_id" then open sess from "session_id"

sess = CGI.Session.new( cgi,
    'database_manager' => CGI::Session::PStore,  # use PStore
    'session_key' => '_rb_sess_id',              # custom session key
    'session_expires' => Time.now + 30 * 60,     # 30 minute timeout
    'prefix' => 'pstore_sid_')  

if sess.has_key? "friend_list"
    @friend_list = sess['friend_list']
    sess['access_count'] += 1
else
    @friend_list = JSON.parse( IO.read( "fbget.json" ) )
    sess['friend_list'] = @friend_list
    sess['access_count'] = 1
end

我想通过会话实例在服务器端保存json列表。我想把它放在一个cookie中将是一个非常糟糕的安全错误。

通过我在线搜索,我没有找到任何关于通过cookie保存会话访问信息的非rails信息。只有如何单独使用。

0 个答案:

没有答案