我使用金字塔框架和beaker作为会话管理的后端,我想在签名的cookie中存储session_id。 session-id与真实的user_id相关联,关联映射将存储在redis之类的内容中。我可以简单地使用下面的配置来实现这一目标吗?该文档未提供完整实现,仅显示使用不安全会话工厂的示例。
这是我的配置文件,编辑为会话详细信息:
session.type = cookie
session.data_dir = %(here)s/data/sessions/data
session.lock_dir = %(here)s/data/sessions/lock
session.key = session_key
session.secret = as98&$Hh94
session.cookie_on_exception = true
这是我的__init__.py
:
config = Configurator(settings=settings)
config.include('pyramid_jinja2')
config.include('pyramid_beaker')
config.include('.models')
config.include('.routes')
config.include('polatick.models')
config.scan()
return config.make_wsgi_app()
我是否只是使用金字塔中的忘记和记忆功能来正确执行此操作?
我在想这个过程就像这样简单的事情:
if user_authenticates():
session_id = create_session_id()
redis.put_entry(session_id, user_id)
request.session['session_id'] = session_id
headers = remember(request, login)
return HTTPFound('/', headers=headers)
我一直在关注此文档:
http://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/pylons/sessions.html
答案 0 :(得分:1)
金字塔社区食谱不是官方文件。它是用户提供的食谱的集合。特别是针对正在将解决方案迁移到Pyramid的Web框架Pylons的用户。
相反,您应该查看Sessions上的官方文档。这提供了开箱即用的会话实现,并允许您实现自己的会话工厂。
在此之后,wiki tutorial中会有一个带有身份验证的会话(后来又带有授权)。
pyramid_nacl_session定义了一个基于pickle的加密cookie序列化程序,使用PyNaCl为cookie状态生成对称加密。
还有pyramid_redis_sessions,一个Pyramid附加组件,它使用Redis作为后端来实现Pyramid的ISession接口。
最后,有关提供会话,授权或身份验证的软件包列表,请参阅Try Pyramid - Extending Pyramid。