对金字塔使用多个身份验证策略
pyramid_authstack的Python项目详细描述
金字塔身份验证堆栈
cryptain authstack包使得可以叠加多个 pyramid项目中的身份验证策略。 这在以下几种情况下都很有用:
- 您需要能够识别用户很长一段时间,而 要求最近登录才能访问个人信息。亚马逊是一个 网站这样做的例子。
- 您希望向用户发送新闻稿,并在以下情况下自动登录用户 他们跟踪通讯中的链接,但不会自动给出 获取敏感信息。
混淆多身份验证策略很简单:创建实例 在authenticationstackpolicy对象中,添加验证策略 你想要它,然后告诉金字塔使用它。
from pyramid.authentication import AuthTktAuthenticationPolicy from pyramid_authstack import AuthenticationStackPolicy auth_policy = AuthenticationStackPolicy() # Add an authentication policy with a one-hour timeout to control # access to sensitive information. auth_policy.add_policy( 'sensitive', AuthTktAuthenticationPolicy('secret', timeout=60 * 60)) # Add a second authentication policy with a one-year timeout so # we can identify the user. auth_policy.add_policy( 'identity', AuthTktAuthenticationPolicy('secret', timeout=60 * 60 * 24 * 365)) config.set_authentication_policy(auth_policy)
用于子策略的名称(sensitive和identity在示例中 如果子策略可以验证 用户。这使得很容易检查哪些身份验证策略匹配 在acl中:
class MyModel(object): # Only allow access if user authenticated recently. __acl__ = [(Allow, 'auth:sensitive', 'view')]
调用remember()或forget()时,将触发所有子策略。你可以筛选列表 通过添加policies参数使用的策略。一个用例,其中 重要的是用户通过新闻稿中的链接访问网站: 您可以标识用户,但不想授予访问权限 不需要额外的证书就可以获取敏感信息。
from pyramid.security import remember # Only set identity-authentication. headers = remember(request, 'chrism', policies=['identity'])
与棱锥体多重身份验证比较
mozilla有一个类似的项目:pyramid_multiauth。有一些不同 在那个包裹和这个包裹之间:
- 金字塔多重身份验证无法指示匹配的身份验证策略, 如果你不经常使用 添加自定义额外主体的身份验证子策略。这个可以 是固定的,但需要在不向后兼容的情况下更改api 太好了。
- 金字塔多重身份验证复制了一些回调处理代码,而不是 重用金字塔的CallbackAuthenticationPolicy。
- 金字塔多重身份验证允许通过pastedeploy.ini文件进行配置,该文件 金字塔AuthStack不支持。
更改日志
1.0.1-2013年8月10日
- 修复自述文件中过时命名的使用。
- 向构造函数添加回调参数。
1.0.0-2013年8月10日
- 第一次释放。