使用beaker实现的zope会话。
项目描述
会话
配置
>>> from zope.component import getUtility, queryUtility >>> from dolmen.beaker.interfaces import ISessionConfig>>> session_config = queryUtility(ISessionConfig) >>> session_config.get('key') 'beaker.session.id'
初始化
dolmen.beaker在遍历开始时(遍历IRootFolder对象)初始化beaker会话。
>>> from zope.event import notify >>> import grokcore.component as grok >>> from zope.publisher.browser import TestRequest >>> from zope.publisher.interfaces.http import IHTTPRequest >>> from zope.traversing.interfaces import BeforeTraverseEvent
我们首先创建一个Request实例。
>>> request = TestRequest() >>> IHTTPRequest.providedBy(request) True
我们通过BeforeTraverseEvent来初始化我们的会话。此事件将在请求中创建一个Session对象实例。
>>> from zope.component.hooks import getSite >>> site = getSite() >>> notify(BeforeTraverseEvent(site, request))
我们可以使用两个可用的适配器来获取会话对象。
>>> from dolmen.beaker.interfaces import ISession >>> session = ISession(request) >>> session.__class__ <class 'beaker.session.SessionObject'>
让我们给我们的会话赋值并保存它。
>>> session['foo'] = 'bar' >>> session.save() >>> session['foo'] 'bar'
在遍历之前,新的请求无法访问会话。
>>> newrequest = TestRequest() >>> newrequest.response._cookies {} >>> session = ISession(newrequest) >>> session['foo'] Traceback (most recent call last): ... KeyError: 'foo'
关闭和无效化
>>> cookie = request.response._cookies >>> cookie {}>>> from zope.publisher.interfaces import EndRequestEvent >>> notify(EndRequestEvent(site, request))>>> cookie = request.response._cookies >>> cookie {'beaker.session.id': {'path': '/', 'samesite': 'Lax', 'value': '...'}}
无效化
>>> import hamcrest >>> session = ISession(request) >>> print(session['foo']) bar>>> session.invalidate() # Or destroy, to get rid of everything >>> session['foo'] Traceback (most recent call last): ... KeyError: 'foo'
Zope会话适配器
>>> from zope.session.interfaces import ISession as IZopeSession>>> request = TestRequest() >>> notify(BeforeTraverseEvent(site, request))>>> zsession = IZopeSession(request) >>> print(zsession) <dolmen.beaker.session.ZopeSession object at ...>>>> from zope.interface.verify import verifyObject >>> verifyObject(IZopeSession, zsession) True>>> data = zsession['my_package'] >>> print(data) <dolmen.beaker.session.NamespaceSessionData object at ...>>>> data['someitem'] = 'test' >>> print(data['someitem']) test>>> data = zsession['some.other.package'] >>> data['info'] = 'Grok !'
更新日志
0.4 (2020-10-07)
更新MANIFEST
0.3 (2020-04-07)
修正了已弃用的导入和包结构。
项目详情
关闭
dolmen.beaker-0.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d071d1d68467e6fcdf8f0417bf31c7dd116b40c33a301d1d74c78ce58d0e5954 |
|
MD5 | cb9a7c8986cc6cdd242054b7fda321d5 |
|
BLAKE2b-256 | f23bcdd89ff75e49acad03c3f9f488f89fb4ece05922607cd4c5fb17d65c9703 |