pyramid.authorization

class ACLHelper[源代码]

用于构造 security policy 它咨询一个 ACL 对象附加到 context 要确定有关以下内容的授权信息,请执行以下操作 principal 或多个主体。如果上下文是 lineage ,还会咨询上下文的父级以获取ACL信息。

permits(context, principals, permission)[源代码]

返回 pyramid.authorization.ACLAllowed 如果ACL允许访问具有给定主体的用户,则返回 pyramid.authorization.ACLDenied 如果不是的话。

在检查是否允许主体时,安全策略会参考 context 首先用于ACL。如果上下文上不存在ACL,或者确实存在ACL,但ACL没有显式允许或拒绝任何有效承担者的访问,请咨询上下文的父ACL,依此类推,直到谱系耗尽或我们确定策略允许或拒绝为止。

在此处理过程中,如果有 pyramid.authorization.Deny 发现ACE与中的任何主体匹配 principals ,通过返回一个 pyramid.authorization.ACLDenied 实例(等于 False )立即。如果有 pyramid.authorization.Allow 如果发现ACE与任何主体匹配,则通过返回 pyramid.authorization.ACLAllowed 实例(等于 True )立即。如果我们用尽上下文的 lineage ,并且没有ACE显式允许或拒绝访问,则返回 pyramid.authorization.ACLDenied (等于 False )。

principals_allowed_by_permission(context, permission)[源代码]

返回显式授予名为的权限的主体集 permission 根据直接连接到 context 以及基于 lineage

在计算权限允许的主体时,我们计算显式授予 permission 在提供的 context 。我们通过“向上”遍历对象图来实现这一点 从根开始 到上下文中去。在这个行走过程中,如果我们发现一个明确的 pyramid.authorization.Allow 匹配的主体的ACE permission ,则主体包括在允许列表中。但是,如果在稍后的演练过程中,在任何 pyramid.authorization.Deny ACE对于权限,主体将从允许列表中删除。如果一个 pyramid.authorization.Deny 致校长 pyramid.authorization.Everyone 属性匹配的遍历过程中遇到 permission ,则清除以前ACL中遇到的所有主体的允许列表。在我们处理了直接连接到的任何ACL之后,遍历过程结束 context ;返回一组主体。

class ACLAuthorizationPolicy[源代码]

一个 authorization policy 它咨询一个 ACL 对象附加到 context 要确定有关以下内容的授权信息,请执行以下操作 principal 或多个主体。这个类是一个包装器 ACLHelper 有关更详细的文档,请参阅该类。

此类的对象实现 pyramid.interfaces.IAuthorizationPolicy 接口。

自 2.0 版本弃用: 新的安全系统已弃用授权策略。看见 升级身份验证/授权 了解更多信息。

常量

Everyone

名为的特殊主体id Everyone . 此主体id被授予所有请求。它的实际值是字符串 'system.Everyone' .

在 2.0 版本加入: 移居 pyramid.security 进入之内 pyramid.authorization .

Authenticated

名为的特殊主体id Authenticated . 此主体id被授予包含任何其他非Everyone主体id的所有请求(根据 authentication policy ). 它的实际值是字符串 'system.Authenticated' .

在 2.0 版本加入: 移居 pyramid.security 进入之内 pyramid.authorization .

ALL_PERMISSIONS

可以用作 permission 无条件匹配所有权限的ACE成员。例如,使用 ALL_PERMISSIONS 可能是这样组成的: ('Deny', 'system.Everyone', ALL_PERMISSIONS) .

在 2.0 版本加入: 移居 pyramid.security 进入之内 pyramid.authorization .

DENY_ALL

一个方便的速记王牌,定义了 ('Deny', 'system.Everyone', ALL_PERMISSIONS) . 在使用“继承”安全策略的系统中,这通常用作ACL中的最后一个ACE,表示“不继承任何其他ACE”的概念。

在 2.0 版本加入: 移居 pyramid.security 进入之内 pyramid.authorization .

返回值

class ACLDenied(ace, acl, permission, principals, context)[源代码]
static __new__(cls, ace, acl, permission, principals, context)

创建新实例。

参数:
  • ace -- 这个 ACE 匹配,触发结果。

  • acl -- 这个 ACL 包含 ace .

  • permission -- 所需的 permission .

  • principals -- 名单 principals 提供。

  • context -- 这个 context 提供 lineage 搜查。

在 2.0 版本加入: 移居 pyramid.security 进入之内 pyramid.authorization .

property msg

指示生成结果的原因的字符串。

class ACLAllowed(ace, acl, permission, principals, context)[源代码]
static __new__(cls, ace, acl, permission, principals, context)

创建新实例。

参数:
  • ace -- 这个 ACE 匹配,触发结果。

  • acl -- 这个 ACL 包含 ace .

  • permission -- 所需的 permission .

  • principals -- 名单 principals 提供。

  • context -- 这个 context 提供 lineage 搜查。

在 2.0 版本加入: 移居 pyramid.security 进入之内 pyramid.authorization .

property msg

指示生成结果的原因的字符串。