我正在致力于将项目从 Pyramid 1.4 升级到 2.x,并且由于 AuthTktAuthenticationPolicy 和 ACLAuthorizationPolicy 的弃用而遇到了障碍。这些是我的身份验证和授权系统的支柱,我不确定如何过渡到 Pyramid 2.x 中的新实现。
如果有任何有关如何使用 Pyramid 2.x 中推荐的方法替换这些已弃用的类的指导或示例,我将不胜感激。以下是我当前设置的片段:
from pyramid.authentication import AuthTktAuthenticationPolicy
from pyramid.authorization import ACLAuthorizationPolicy
from pyramid.config import Configurator
def main(settings):
authn_policy = AuthTktAuthenticationPolicy(
"somesecret123", cookie_name="session-id", wild_domain=True, hashalg="sha512"
)
authz_policy = ACLAuthorizationPolicy()
config = Configurator(
settings=settings,
authentication_policy=authn_policy,
authorization_policy=authz_policy,
)
我尝试过查看文档,但无法从中拼凑出解决方案。
有两个已发表的有关此内容的文档,第一个是关于如何升级的2.0 发行说明的摘录。以及官方文档中 wiki2 应用程序教程中的完整示例。
您提供的代码的更新示例是:
from pyramid.authentication import AuthTktCookieHelper
from pyramid.csrf import CookieCSRFStoragePolicy
class MySecurityPolicy:
def __init__(self, secret):
self.authtkt = AuthTktCookieHelper(
secret,
cookie_name='auth_tkt',
wild_domain=True,
hashalg="sha512")
def includeme(config):
settings = config.get_settings()
config.set_csrf_storage_policy(CookieCSRFStoragePolicy())
config.set_default_csrf_options(require_csrf=True)
config.set_security_policy(MySecurityPolicy('somesecret123'))