librelist archives

« back to archive

bamboo中关于Session操作的API更新

bamboo中关于Session操作的API更新

From:
Tang Daogang
Date:
2012-05-07 @ 04:14
对bamboo的Session增强了一些功能:

主要方面:
1. 提供了对其它session的操作。没有session_id额外参数的话,默认对自己进行操作;
2. 提供了对某一个session设置过期时间的精确的API;

目前的几个API功能如下:

Session:get(session_id)
获取session_id所指session的所有数据

Session:setKey(key, value, st, session_id)
对session_id所指session存储键值对,可以存储'string', 'list', 'set', 'zset'类型的数据,由st指定。

Session:getKey(key, session_id)
从session_id所指session取key的值

Session:delKey(key, session_id)
从session_id所指session删除key和key的值

Session:del(session_id)
删除session_id所指session

Session:setGlobalExpiration(seconds)
设置全局过期时间,影响后面的所有session过期操作。

Session:setExpiration(seconds, session_id)
对session_id所指session设置过期时间。



-- 
Nothing is impossible.

Re: bamboo中关于Session操作的API更新

From:
Tang Daogang
Date:
2012-05-07 @ 07:00
补充一个API:

Session:getUserHash(user)

这个函数用于根据用户找到其对应的session_id。注,如果同一用户有多处登录,只返回最后一次的登录session_id。


底层机制:
在底层,当用户登录时,会建立一个user_id与session_id的反向hash,退出时清除。


2012/5/7 Tang Daogang <daogangtang@gmail.com>

> 对bamboo的Session增强了一些功能:
>
> 主要方面:
> 1. 提供了对其它session的操作。没有session_id额外参数的话,默认对自己进行操作;
> 2. 提供了对某一个session设置过期时间的精确的API;
>
> 目前的几个API功能如下:
>
> Session:get(session_id)
> 获取session_id所指session的所有数据
>
> Session:setKey(key, value, st, session_id)
> 对session_id所指session存储键值对,可以存储'string', 'list', 'set', 'zset'类型的数据,由st指定。
>
> Session:getKey(key, session_id)
> 从session_id所指session取key的值
>
> Session:delKey(key, session_id)
> 从session_id所指session删除key和key的值
>
> Session:del(session_id)
> 删除session_id所指session
>
> Session:setGlobalExpiration(seconds)
> 设置全局过期时间,影响后面的所有session过期操作。
>
> Session:setExpiration(seconds, session_id)
> 对session_id所指session设置过期时间。
>
>
>
> --
> Nothing is impossible.
>
>


-- 
Nothing is impossible.

Re: bamboo中关于Session操作的API更新

From:
Tang Daogang
Date:
2012-05-08 @ 10:04
今天我估计把cookie和session的关系理清了:

如下:

   1. 在settings.lua中如果不写 expiration=nnn,则在关闭浏览器后,cookie自动过期(session会默认保存一天);
   2. 在settings.lua中如果写 expiration=nnn,则cookie和session过期时间都会设成nnn秒(绝对过期);
   3. 在settings.lua里面有expiration=nnn,
   然后,又设置了relative_expiration=true后,则是相对过期,在最后一次操作nnn秒后才过期;
   4. 
在settings.lua里面有expiration=nnn,且设置了open_custom_expiration=true后,则可以对某一个session进行精确的过期时间设定,设定时使用
   Session:setExpiration函数;
   5.
   
在settings.lua里面有expiration=nnn,且设置了open_custom_expiration=true,且已经对某一个session进行精确的过期时间设定mmm后,如果没有设置relative_expiration,则此cookie和session将会在mmm秒后过期(绝对过期);
   6. 在settings.lua里面有expiration=nnn,且设置了open_custom_expiration=true,且已经对某
   
一个session进行精确的过期时间设定mmm后,如果设置了relative_expiration=true,则此cookie和session将会在最后一次操作的
   mmm秒后过期(相对过期);
   7. 如上即是我想到的所有情况。


上述情况,我想已经能cover所有各类的登录设定了吧。比如,(保存登录)永久不过期,实际上相当于设置一个相当长的时间(30年,100年)。


2012/5/7 Tang Daogang <daogangtang@gmail.com>

> 补充一个API:
>
> Session:getUserHash(user)
>
> 这个函数用于根据用户找到其对应的session_id。注,如果同一用户有多处登录,只返回最后一次的登录session_id。
>
>
> 底层机制:
> 在底层,当用户登录时,会建立一个user_id与session_id的反向hash,退出时清除。
>
>
>
> 2012/5/7 Tang Daogang <daogangtang@gmail.com>
>
>> 对bamboo的Session增强了一些功能:
>>
>> 主要方面:
>> 1. 提供了对其它session的操作。没有session_id额外参数的话,默认对自己进行操作;
>> 2. 提供了对某一个session设置过期时间的精确的API;
>>
>> 目前的几个API功能如下:
>>
>> Session:get(session_id)
>> 获取session_id所指session的所有数据
>>
>> Session:setKey(key, value, st, session_id)
>> 对session_id所指session存储键值对,可以存储'string', 'list', 'set', 'zset'类型的数据,由st指定。
>>
>> Session:getKey(key, session_id)
>> 从session_id所指session取key的值
>>
>> Session:delKey(key, session_id)
>> 从session_id所指session删除key和key的值
>>
>> Session:del(session_id)
>> 删除session_id所指session
>>
>> Session:setGlobalExpiration(seconds)
>> 设置全局过期时间,影响后面的所有session过期操作。
>>
>> Session:setExpiration(seconds, session_id)
>> 对session_id所指session设置过期时间。
>>
>>
>>
>> --
>> Nothing is impossible.
>>
>>
>
>
> --
> Nothing is impossible.
>
>


-- 
Nothing is impossible.

Re: bamboo中关于Session操作的API更新

From:
Tang Daogang
Date:
2012-05-09 @ 02:07
接着,另外一个问题。 用户单线登录全局设置。

现在,只要在settings.lua里面写一个

user_single_login = true

就可以实现用户单线登录了。


2012/5/8 Tang Daogang <daogangtang@gmail.com>

> 今天我估计把cookie和session的关系理清了:
>
> 如下:
>
>    1. 在settings.lua中如果不写
>    expiration=nnn,则在关闭浏览器后,cookie自动过期(session会默认保存一天);
>    2. 在settings.lua中如果写 expiration=nnn,则cookie和session过期时间都会设成nnn秒(绝对过期);
>    3. 在settings.lua里面有expiration=nnn,
>    然后,又设置了relative_expiration=true后,则是相对过期,在最后一次操作nnn秒后才过期;
>    4. 
在settings.lua里面有expiration=nnn,且设置了open_custom_expiration=true后,则可以对某一个session进行精确的过期时间设定,设定时使用
>    Session:setExpiration函数;
>    5.
>    
在settings.lua里面有expiration=nnn,且设置了open_custom_expiration=true,且已经对某一个session进行精确的过期时间设定mmm后,如果没有设置relative_expiration,则此cookie和session将会在mmm秒后过期(绝对过期);
>    6. 在settings.lua里面有expiration=nnn,且设置了open_custom_expiration=true,且已经对某
>    
一个session进行精确的过期时间设定mmm后,如果设置了relative_expiration=true,则此cookie和session将会在最后一次操作的
>    mmm秒后过期(相对过期);
>    7. 如上即是我想到的所有情况。
>
>
> 上述情况,我想已经能cover所有各类的登录设定了吧。比如,(保存登录)永久不过期,实际上相当于设置一个相当长的时间(30年,100年)。
>
>
>
> 2012/5/7 Tang Daogang <daogangtang@gmail.com>
>
>> 补充一个API:
>>
>> Session:getUserHash(user)
>>
>> 这个函数用于根据用户找到其对应的session_id。注,如果同一用户有多处登录,只返回最后一次的登录session_id。
>>
>>
>> 底层机制:
>> 在底层,当用户登录时,会建立一个user_id与session_id的反向hash,退出时清除。
>>
>>
>>
>> 2012/5/7 Tang Daogang <daogangtang@gmail.com>
>>
>>> 对bamboo的Session增强了一些功能:
>>>
>>> 主要方面:
>>> 1. 提供了对其它session的操作。没有session_id额外参数的话,默认对自己进行操作;
>>> 2. 提供了对某一个session设置过期时间的精确的API;
>>>
>>> 目前的几个API功能如下:
>>>
>>> Session:get(session_id)
>>> 获取session_id所指session的所有数据
>>>
>>> Session:setKey(key, value, st, session_id)
>>> 对session_id所指session存储键值对,可以存储'string', 'list', 'set', 'zset'类型的数据,由st指定。
>>>
>>> Session:getKey(key, session_id)
>>> 从session_id所指session取key的值
>>>
>>> Session:delKey(key, session_id)
>>> 从session_id所指session删除key和key的值
>>>
>>> Session:del(session_id)
>>> 删除session_id所指session
>>>
>>> Session:setGlobalExpiration(seconds)
>>> 设置全局过期时间,影响后面的所有session过期操作。
>>>
>>> Session:setExpiration(seconds, session_id)
>>> 对session_id所指session设置过期时间。
>>>
>>>
>>>
>>> --
>>> Nothing is impossible.
>>>
>>>
>>
>>
>> --
>> Nothing is impossible.
>>
>>
>
>
> --
> Nothing is impossible.
>
>


-- 
Nothing is impossible.