这是一个创建于 3615 天前的主题,其中的信息可能已经有所发展或是发生改变。
#服务端主要代码
use Rack::Session::Cookie, :key => 'abc',
:expire_after => 15, # == one day
:secret => 'This one time, at band camp...'
get '/admin' do
session['user_type'] = '有效用户'
"your session id #{session[:id].inspect}"
end
get '/admin/test' do
"#{session.inspect}"
end
######
主要问题:
浏览器在15秒之后,会清空session(基于cookie的)。
而我在本地用curl提交之前的session(即已被浏览器清空的session), 服务器返回依旧是"有效用户",也就是说,服务器并没有在15秒之后自动清空该session。。。
######
我的疑问:
1、session究竟是rack维持的?还是thin维持的?
2、有么有相关的方法,用来设置session的时效?
3、如果对每个session设置时间戳,每次加以验证,会不会消耗大量服务器资源?毕竟session的数量会持续增加,除非重启服务进程。
4 条回复 • 2014-11-23 10:56:34 +08:00
|
|
1
lgn21st 2014-11-21 22:39:55 +08:00 1
|
|
|
2
liprais 2014-11-22 11:00:20 +08:00
rack-timeout?
|
|
|
3
undeflife 2014-11-23 01:08:25 +08:00 1
这就是基于cookie的客户端session呀,服务端不会去记录session的状态的. 增加时间戳活着直接使用user表类似last_sign_at的字段都是可以的,至于消耗多少服务器资源就要看你的用户量了,或者你也可以在服务端使用Memcached/Redis去缓存你的sessionid并设置过期时间.
|