棱锥体选择验证
pyramid-selectauth的Python项目详细描述
自动选择 给定身份验证策略列表,为特定请求使用正确的策略
概述
selectableauthenticationpolicy是一个金字塔身份验证策略,它选择 另一个提供了iauthenticationpolicy对象,以提供不同的身份验证策略 根据具体要求。只需向它传递一个策略列表 应按顺序尝试,并注册“选定策略”请求方法 将选择并缓存要使用的正确策略:
policies = [ IPAuthenticationPolicy("127.0.*.*", principals=["local"]) IPAuthenticationPolicy("192.168.*.*", principals=["trusted"]) ] set_selectable_authentication_policy(config, policies)
本例使用金字塔ipauth模块分配有效主体 基于请求的原始IP地址。它结合了两种 使来自“127.0.*.*”的请求具有主体的策略 “本地”,而来自“192.168.*.*”的请求将具有主体 “值得信任”。
您可以使用create_selectable_authentication_policy工厂来创建 selectableauthenticationpolicy不设置实例:
policies = [ IPAuthenticationPolicy("127.0.*.*", principals=["local"]) IPAuthenticationPolicy("192.168.*.*", principals=["trusted"]) ] policy = create_selectable_authentication_policy(config, policies) policy.add_policy(IPAuthenticationPolicy("10.0.*.*", principals=["not-so-trusted"])) config.set_authentication_policy(policy)
您也可以使用config.include()来包含策略,然后添加子策略 在配置上使用注册的add_selectauth策略指令:
config.include('pyramid_selectauth') config.add_selectauth_policy(IPAuthenticationPolicy("127.0.*.*", principals=["local"])) config.add_selectauth_policy(IPAuthenticationPolicy("192.168.*.*", principals=["trusted"]))
政策选择方法
默认选择方法将在提供的 按顺序排列策略,并选择第一个不返回none的策略。
通过扩展selectableauthenticationpolicy和 用逻辑重写select_policy方法以选择 当前请求,然后指定工厂中的类:
class MyPolicy(SelectableAuthenticationPolicy): def select_policy(self, request): return self._policies[0] # Always uses the first policy (very useful!) policies = [ IPAuthenticationPolicy("127.0.*.*", principals=["local"]) IPAuthenticationPolicy("192.168.*.*", principals=["trusted"]) ] policy = create_selectable_authentication_policy(config, policies, _class=MyPolicy) config.set_authentication_policy(policy)
展开设置
也可以将身份验证策略指定为 粘贴部署设置。考虑以下示例:
[app:pyramidapp] use = egg:mypyramidapp selectauth.policy_class = mypyramidapp.policies.MySelectAuthPolicy selectauth.policies = mypyramidapp.policies.ipauthpolicyfactory mypyramidapp.policies.mypolicyfactory
要从这些设置配置身份验证,只需包含multiauth 进入配置程序的模块:
config.include("pyramid_selectauth")
1.0.1-2018年9月24日
- 使用proxy_methoddecorator重构策略方法。
1.0.0-2018年9月23日
- 生产准备释放。
0.0.4-2018年9月21日
- 初次发布。