pyramid.authorization

class ACLAuthorizationPolicy[源代码]

authorization policy 哪个咨询一个 ACL 对象附加到 context 确定有关 principal 或多个主体。如果上下文是 lineage ,还将查询上下文的父级以获取ACL信息。关于此安全策略,以下是正确的。

  • 当检查是否允许“当前”用户时(通过 permits 方法),安全策略参考 context 首先是一个acl。如果上下文中不存在任何ACL,或者某个ACL确实存在,但ACL不明确允许或拒绝任何有效主体的访问,请咨询上下文的父ACL,依此类推,直到沿袭耗尽或我们确定策略允许或拒绝为止。

    在此过程中,如果有的话 pyramid.security.Deny 发现ace与中的任何主体匹配 principals ,通过返回 pyramid.security.ACLDenied 实例(等于 False )立即。如果有的话 pyramid.security.Allow 找到与任何主体匹配的ace,通过返回 pyramid.security.ACLAllowed 实例(等于 True )立即。如果我们把上下文的 lineage ,并且没有ACE明确允许或拒绝访问,请返回 pyramid.security.ACLDenied 等于 False

  • 当通过 pyramid.security.principals_allowed_by_permission() 方法,我们计算显式授予 permission 在提供的 context . 我们通过向上移动对象图来实现这一点。 从根本上 根据上下文。在这个行走过程中,如果我们发现 pyramid.security.Allow 一个与 permission ,主体包含在允许列表中。但是,如果在随后的步行过程中, pyramid.security.Deny ace对于权限,将从允许列表中删除主体。如果A pyramid.security.Deny 致委托人 pyramid.security.Everyone 在与 permission ,将清除在以前的ACL中遇到的所有主体的允许列表。在我们处理了直接连接到 context ;返回一组主体。

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