web.py session.py

"""
web.py session.py
功能:web.py 的 session 功能。
参考:http://webpy.org/cookbook/sessions.zh-cn
测试url:
1.添加一条 session,并清除过期 session。
http://localhost:8080/addSession
2.清除过期的 sessions.
http://localhost:8080/killSession

知识点:
1.
web.py在处理请求之前,就加载session对象及其数据;
在请求处理完之后,会检查session数据是否被改动。
如果被改动,就交由session对象保存。
2.
例中的initializer参数决定了session初始化的值,它是个可选参数。
3.
本例用数据库代替磁盘文件来存储session信息,
只要用DBStore代替DiskStore即可。
使用DBStore需要建立一个表,结构如下:
create table sessions2 (
    session_id varchar(128) UNIQUE NOT NULL,
    atime timestamp NOT NULL default current_timestamp,
    data text
);
注:用 varchar 时,指定的长度要比原始字符串略长,
否则,会在服务端报错,但不影响服务使用。
atime 字段必需有,是框架用以判断 session 是否过期的创建时间。
4.
web.config中的session_parameters保存着session的相关设置,
session_parameters本身是一个字典,可以对其修改。


个人理解:
1.
经测试,发现
web.config.session_parameters['ignore_expiry'] = True / False
都会在 调用 http://localhost:8080/addSession 时清除过期 session.
2.
http://localhost:8080/killSession,
可以在不 添加 session 的情况下,清除过期 session。
"""
import web
import uuid

# 非调试模式,默认:调试模式。
web.config.debug = False
# cookie_name - 保存session id的Cookie的名称
web.config.session_parameters['cookie_name'] = 'webpy_session_id'
# cookie_domain - 保存session id的Cookie的domain信息
web.config.session_parameters['cookie_domain'] = None
# timeout - session的有效时间 ,以秒为单位
# web.config.session_parameters['timeout'] = 86400, # 24 * 60 * 60, # 24 hours   in seconds
web.config.session_parameters['timeout'] = 3  # 3 * 60, # 3 min   in seconds
# ignore_expiry - 如果为True,session就永不过期。
# 经测试,True时,不提示 session 过期,但是会删除过期的session.
web.config.session_parameters['ignore_expiry'] = True
# False 时,直接会在浏览器页面提示,Session expired。
# web.config.session_parameters['ignore_expiry'] = False
# ignore_change_ip - 如果为False,就表明只有在访问该session的IP与创建该session的IP完全一致时,session才被允许访问。
web.config.session_parameters['ignore_change_ip'] = True
# secret_key - 密码种子,为session加密提供一个字符串种子。
# web.config.session_parameters['secret_key'] = 'fLjUfxqXtfNoIldA0A0J'
web.config.session_parameters['secret_key'] = ''
# expired_message - session过期时显示的提示信息。
web.config.session_parameters['expired_message'] = 'Session expired'

urls = (
    "/addSession", "addSession",
    "/killSession", "killSession"
)
app = web.application(urls, locals())
# 磁盘文件的形式存 session。
# session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={'count': 0})
# 建立数据库连接。
db = web.database(dbn='mysql', db='test', user='root', pw='123456')
# DBStore被创建要传入两个参数:db对象和session的表名。
store = web.session.DBStore(db, 'sessions2')
# session 绑定了 session 表对象,可以直接通过session添加一条记录。
session = web.session.Session(app, store)


class addSession:
    def GET(self):
        """
        功能:添加 session.
        :return:
        """
        session.session_id = str(uuid.uuid1())
        session.data = 'username=166xxxx5258;login=1'
        return session.session_id, session.data


class killSession:
    def GET(self):
        """
        功能:清除过期 sessions.
        :return:
        """
        session.kill()
        return "killed overdue sessions."


if __name__ == "__main__":
    app.run()





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值