Zope安全组件的类似Grok的配置
项目描述
此软件包提供了在无需ZCML的情况下定义Zope权限和安全检查器的基本元素。
设置 grokcore.security
此软件包的设置基本上类似于grokcore.component软件包,请参阅其文档以获取详细信息。您需要的附加ZCML行如下:
<include package="grokcore.security" file="meta.zcml" /> <include package="grokcore.security" />
请将此内容放在根ZCML文件顶部附近,但在包含grokcore.component配置的行下方。
定义权限
在grokcore.component中,通过从某些基类继承来定义(并自动注册)各种组件。同样,使用grokcore.security定义权限也是如此
import grokcore.security class EditContent(grokcore.security.Permission): grokcore.security.name('mypkg.EditContent')
这定义了一个ID为mypkg.EditContent的权限。您必须始终显式指定此ID。此外,您还可以为权限提供一个人类可读的标题和描述。当您的应用程序在某个地方提供权限列表时,这很有用,您不想让用户费心解读点状ID。
import grokcore.security class EditContent(grokcore.security.Permission): grokcore.security.name('mypkg.EditContent') grokcore.security.title('Edit content') grokcore.security.description('Anyone who has this permission may ' 'modify content in the application.')
定义组件的检查器
grokcore.security提供了一些定义组件检查器的手段
grokcore.security.require(permission),它可以用作类级别指令来为整个组件设置权限,或者用作装饰器来为函数或方法设置权限。
来自grokcore.security.util的protect_getattr和protect_setattr,它们接受一个类、一个属性名和一个权限作为参数,并定义Zope安全检查器以在指定类的实例上获取或设置特定属性。
有了这些,您可以构建需要安全声明的组件的grokkers。例如,grokcore.view软件包使用它们来定义一个grokker,该grokker为视图定义安全声明。
class ViewSecurityGrokker(martian.ClassGrokker): martian.component(grokcore.view.View) martian.directive(grokcore.security.require, name='permission') def execute(self, factory, config, permission, **kw): for method_name in zope.publisher.interfaces.browser.IBrowserPage: config.action( discriminator=('protectName', factory, method_name), callable=grokcore.security.util.protect_getattr, args=(factory, method_name, permission), ) return True
有了这样的grokker,可以保护视图如下
class Edit(grokcore.view.View): grokcore.security.require(EditContent)
注意我们如何简单地传递一个权限类到require指令。或者,您也可以传递权限ID
class Edit(grokcore.view.View): grokcore.security.require('mypkg.EditContent')
如果您想能够为单个类方法而不是整个类定义权限,您只需将您的grokker基于martian.MethodGrokker而不是ClassGrokker。定义检查器的实际机制是相同的。
请注意,grokcore.security尚未提供允许您指定简单属性访问权限(读取和写入)的指令。
API概述
- 权限
定义权限的基类。使用name指令定义必需的权限ID。可选地使用title和description指令提供权限的人类可读信息。
- 公共
特殊权限,可以在组件不应由权限保护的任何时候引用(公开访问)。
- require(permission_class_or_id)
声明,使用特定组件(当作为类级别指令使用时)或方法(当作为方法装饰器使用时)需要一定的权限。参数可以是权限类(Permission 的子类)或权限 ID。
此外,grokcore.security 包暴露了 grokcore.component API。
更改
4.0 (2023-07-11)
支持 Python 3.7、3.8、3.9、3.10、3.11。
弃用对 Python 2.7、3.4、3.5、3.6 的支持。
3.0.1 (2018-01-12)
重新排列测试,以便 Travis CI 可以抓取所有功能测试。
3.0.0 (2018-01-05)
修复了几个暴露的错误。
1.7 (2018-01-03)
Python 3 兼容性。
1.6.3 (2016-01-29)
更新测试。
1.6.2 (2012-05-07)
正确声明 zope.dottedname 为依赖项。
1.6.1 (2012-05-02)
修复了包,使其在未指定额外 role 时也能正常工作。
1.6 (2012-05-01)
权限和角色组件已从 grok 包移动到属于它的 grokcore.security 包。
permissions() 指令已从 grok 包移动到属于它的 grokcore.security。
1.5 (2010-11-01)
提高了对 Martian 和 grokcore.component 的要求。
使包符合 zope.org 存储库策略。
1.4 (2009-12-13)
注意 回滚了 grokcore.component-2.0 和 martian-0.12 的版本要求。这些要求阻碍了进一步的发展,特别是基于 ZTK 的 grok-1.1。1.3 版本可能应该被称为 2.0,就像 grokcore.component 一样。
从主分支移植 setup.py 依赖修复。
使用 zope.security 而不是 zope.app.security。
1.3 (2009-09-16)
使用 grok.zope.org/releaseinfo 信息而不是我们自己的 versions.cfg 复制,以便更容易维护。
依赖于 grokcore.component 2.0 和 0.12 Martian - 这改变了继承问题,但似乎不影响 grokcore.security 本身。
1.2 (2009-09-14)
将默认权限从 grok.View 更改为 zope.View。似乎没有特别的原因不使用在 zope.app.security 中定义的标准 zope.View 权限。
注意:您仍然必须在您的 site.zcml 文件中分配此权限。否则,您无法访问任何视图。
请确保包括 zope.app.security 的配置,因为该包定义了 zope.View 权限。请注意,在未来,这将更改为 zope.security。
将 versions.cfg 与 grok 1.0 发布候选版本的 versions.cfg 保持一致。
1.1 (2009-07-03)
将默认权限从 zope.Public 更改为 grok.View。
注意:您必须在您的 site.zcml 文件中分配此权限。否则,您无法访问任何视图。
1.0 (2008-08-03)
于 2008 年 7 月创建了 grokcore.security,通过将 Grok 中的安全相关组件、grokkers 和指令进行分解。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源代码分发
构建分发
grokcore.security-4.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f1aafd3ebc31dfcd2e4f8c2ee8df9830cdd936d49ece221ac9199b2642ef9ca6 |
|
MD5 | 8674097211c9472fdc6f17692a7e09d8 |
|
BLAKE2b-256 | 7f24e41df3e8451d290f95ed308a20521074a3be188470c780405509486632da |
grokcore.security-4.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 51f0433e858fec5dcfdd22dfc3284faf39944e5a8c306547e4f2d7e99ce27fb1 |
|
MD5 | f4c231a14fa59920a9028ccc3744fec0 |
|
BLAKE2b-256 | 136af666add6886c75229755cfd22d03dc7a7d7866690800df657bcd74594ca9 |