pyramid.security

身份验证API函数

forget(request)[源代码]

返回头元组序列(例如 [('Set-Cookie', 'foo=abc')] )适用于“忘记”当前已验证用户拥有的一组凭据。在视图函数的主体中,一个常见的用法可能看起来是这样的。 (response 假定为 WebOb 风格 response 以前由视图代码计算的对象):

from pyramid.security import forget
headers = forget(request)
response.headerlist.extend(headers)
return response

如果没有 authentication policy 在使用中,此函数将始终返回空序列。

remember(request, userid, **kwargs)[源代码]

返回头元组的序列(例如 [('Set-Cookie', 'foo=abc')] )根据此请求的响应。这些头适用于“记住”由作为 userid*kw 使用电流 authentication policy . 在视图函数的主体中,常见用法可能是这样的 (response 假定为 WebOb 风格 response 以前由视图代码计算的对象):

from pyramid.security import remember
headers = remember(request, 'chrism', password='123', max_age='86400')
response = request.response
response.headerlist.extend(headers)
return response

如果没有 authentication policy 在使用中,此函数将始终返回空序列。如果使用,其组成和含义 **kw 必须得到呼叫代码和有效身份验证策略的同意。

在 1.6 版更改: 贬低 principal 赞成的论点 userid 澄清其与身份验证策略的关系。

在 1.10 版更改: 删除了已弃用的 principal 争论。

授权API函数

principals_allowed_by_permission(context, permission)[源代码]

提供了一个 context (资源对象),以及 permission (字符串或Unicode对象),如果 authorization policy 有效,返回 principal 在中拥有权限的ID context . 如果没有有效的授权策略,这将返回具有单个值的序列 pyramid.security.Everyone (表示所有主体的特殊主体标识符)。

注解

即使是 authorization policy 实际上,某些(外来的)授权策略可能无法实现此功能所需的机制;这些策略将导致 NotImplementedError 调用此函数时引发的异常。

view_execution_permitted(context, request, name='')[源代码]

如果视图由指定 contextname 受保护 permission ,使用有效的身份验证/授权策略和 request . 返回布尔结果。如果没有 authorization policy 有效,或者如果视图不受权限保护,则返回 True . 如果找不到视图,将引发异常。

在 1.4a4 版更改: 如果找不到视图,则引发异常。

常量

Everyone

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

Authenticated

名为“authenticated”的特殊主体ID。此主体ID被授予包含任何其他非所有人主体ID的所有请求(根据 authentication policy )它的实际值是字符串“System.Authenticated”。

ALL_PERMISSIONS

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

DENY_ALL

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

NO_PERMISSION_REQUIRED

一种特殊的权限,它指示视图应该始终由完全匿名的用户执行,而不管默认的权限是什么,都绕过任何 authorization policy 这可能是有效的。它的实际值是字符串“不需要权限”。

返回值

Allow

ace“动作”(ace中的第一个元素,例如 (Allow, Everyone, 'read') 这意味着允许访问。aces序列构成一个acl。它是一个字符串,其实际值为“allow”。

Deny

ace“动作”(ace中的第一个元素,例如 (Deny, 'george', 'read') 这意味着拒绝访问。aces序列构成一个acl。它是一个字符串,其实际值为“deny”。

class Denied[源代码]

的实例 Denied 当与安全相关的API或其他 Pyramid 代码拒绝与ACL检查无关的操作。它的计算结果等于所有布尔错误类型。它有一个名为 msg 描述拒绝的情况。

static __new__(cls, s, *args)

创建新实例。

参数:
  • fmt -- 解释拒绝原因的格式字符串。
  • args -- 参数存储并与格式字符串一起使用,以生成 msg .
msg

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

class Allowed[源代码]

的实例 Allowed 当与安全相关的API或其他 Pyramid 代码允许与ACL检查无关的操作。它的计算结果等于所有布尔真类型。它有一个名为 msg 描述允许的情况。

static __new__(cls, s, *args)

创建新实例。

参数:
  • fmt -- 解释拒绝原因的格式字符串。
  • args -- 参数存储并与格式字符串一起使用,以生成 msg .
msg

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

class ACLDenied[源代码]

的实例 ACLDeniedpyramid.security.Denied 表示对ACL进行的安全检查被拒绝。它的计算结果等于所有布尔错误类型。它还具有以下属性: aclacepermissionprincipalscontext . 这些属性表示请求中涉及的安全值。它的 __str__ 方法为调试目的打印这些属性的摘要。相同的摘要与 msg 属性。

static __new__(cls, ace, acl, permission, principals, context)

创建新实例。

参数:
  • ace -- 这个 ACE 匹配,触发结果。
  • acl -- 这个 ACL 包含 ace .
  • permission -- 所需的 permission .
  • principals -- 名单 principals 提供。
  • context -- 这个 context 提供 lineage 搜查。
msg

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

class ACLAllowed[源代码]

的实例 ACLAllowedpyramid.security.Allowed 表示允许对ACL进行显式安全检查。它的计算结果等于所有布尔真类型。它还具有以下属性: aclacepermissionprincipalscontext . 这些属性表示请求中涉及的安全值。它的 __str__ 方法为调试目的打印这些属性的摘要。相同的摘要与 msg 属性。

static __new__(cls, ace, acl, permission, principals, context)

创建新实例。

参数:
  • ace -- 这个 ACE 匹配,触发结果。
  • acl -- 这个 ACL 包含 ace .
  • permission -- 所需的 permission .
  • principals -- 名单 principals 提供。
  • context -- 这个 context 提供 lineage 搜查。
msg

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