【问题标题】:How to cleanly remove a Plone custom permission?如何干净地删除 Plone 自定义权限?
【发布时间】:2013-01-18 12:05:06
【问题描述】:

您知道,您开始创建一个名为 something.good 的发行版,并在其上定义一个 permissions.zcml 类似:

<configure xmlns="http://namespaces.zope.org/zope">

  <permission
     id="something.good.reset"
     title="something.good: reset entries"
     />

</configure>

但是,一旦在服务器上安装了发行版,你就会意识到权限不够好,必须完全重构为something.else

plone_quickinstaller 卸载something.good 不会删除权限。转到 ZMI 中的任何安全选项卡,您仍然可以看到它。

我四处寻找文档,浏览 AccessControlProducts.GenericSetup 中的代码,但找不到任何东西。

知道如何删除它吗?

【问题讨论】:

    标签: security permissions plone


    【解决方案1】:

    好的,所以 Plone 很简单,不要介意别人会告诉你什么。

    那么,您(实际上是我)想要删除权限定义? 去做吧!

    所以要检查以正确删除权限的事项列表是:

    • 删除permissions.zcml的权限
      • 如果没有剩余权限,请删除对该文件的任何引用(可能在您的 configure.zcml 上)
    • 删除所有对profiles/default/rolemap.xml权限的引用
    • 扫描您的所有configure.zcml 或 python 文件(如果使用类似 grok 的权限)以引用该权限

    就是这样!

    一旦您重新启动实例,权限将不再显示在 ZMI 的安全选项卡上。

    似乎权限是在启动时即时创建的?在我看来是这样。证明我错了!

    【讨论】:

    • 你是对的;请注意,分配权限存储在 ZODB(持久化)中。再次将权限添加到 Zope,这些权限的分配将神奇地重新出现。
    • 感谢马丁的说明。关于如何清理它的任何代码指针?
    • 您的意思是删除持久化的分配信息?
    • 是的,如果您想删除权限,则应删除任何保留的内容...
    • 它需要对象树的完整遍历来清理它,顺便说一句。
    猜你喜欢
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2013-11-01
    • 2015-12-01
    • 1970-01-01
    相关资源
    最近更新 更多