1

我正在使用带有烧杯的金字塔框架作为会话管理的后端,并且我想将 session_id 存储在签名的 cookie 中。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

4

1 回答 1

1

Pyramid Community Cookbook 不是官方文档。它是用户贡献的食谱的集合。尤其是针对正在将解决方案迁移到 Pyramid 的 Web 框架 Pylons 的用户。

相反,您应该查看有关Sessions的官方文档。这提供了开箱即用的会话实现,并允许您实现自己的会话工厂。

之后,在wiki 教程中有一个带有身份验证(以及稍后带有授权)的会话的实现。

pyramid_nacl_session定义了一个基于pickle的加密cookie序列化程序,使用PyNaCl为cookie状态生成对称加密。

还有pyramid_redis_sessions,一个 Pyramid 插件,它实现了 Pyramid 的 ISession 接口,使用 Redis 作为其后端。

最后,有关提供会话、授权或身份验证的软件包列表,请参阅Try Pyramid - Extending Pyramid

于 2016-09-05T08:12:53.133 回答