如何使用金字塔和cookie的cookie会话? beaker正确存储session_id?

时间:2016-09-04 16:51:51

标签: python session pyramid beaker

我使用金字塔框架和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

1 个答案:

答案 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