0

我正在尝试在 Pyramid 中实现我自己的会话工厂。我见过的所有会话工厂示例(烧杯、redis 等)都将其实现为以下子类dict

request.session['key'] = 'value'

我想实现一个非常简单的会话接口:

request.session.set('key', 'value')
request.session.get
request.session.delete

这个可以吗?这是否会影响 Pyramid 的任何内部方法无法正常运行?是否有任何 Pyramid 子系统依赖于类似 dict 的会话?

编辑:

默认值SessionAuthenticationPolicy确实取决于会话字典

def remember(self, ...):
    ...
    request.session[self.userid_key] = principal
4

1 回答 1

2

到目前为止,您所看到的东西都符合 Pyramid 的ISession界面。如果您希望任意包能够访问您的会话(例如SessionAuthenticationPolicy),您必须提供符合这些包期望的接口的会话实现。

这就是 Pyramid 期望有效运作的。话虽如此,实际上很少有软件包需要有效的会话,所以你通常可以做任何你想做的事(直到你不能:)。如果您想在原始界面之上提供其他方法供您的应用程序使用,那完全可以。

http://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/api/interfaces.html?highlight=isession#pyramid.interfaces.ISession

于 2013-03-14T16:37:30.070 回答