从 Portlet 中删除自定义权限/操作

2024-01-17

我已经能够根据 Liferay Plugins SDK 中的示例定义自定义 portlet 操作/权限

https://github.com/liferay/liferay-plugins/tree/master/portlets/sample-permissions-portlet https://github.com/liferay/liferay-plugins/tree/master/portlets/sample-permissions-portlet

我想知道从 portlet 中删除自定义 portlet 操作/权限(不是模型权限)所需的必要步骤。

我记得观察到,当我使用修改后的自定义操作/权限重新部署 portlet 时,旧的自定义操作/权限仍然存在。

我尝试从 Tomcat 的 webapps 中删除 portlet 文件夹,并且成功取消注册。但是,当我再次部署 portlet 并从相应的 XML 中删除自定义操作/权限后,我仍然可以在“定义角色的权限”中看到权限。

我尝试清除 Liferay 控制面板的服务器管理中的权限设置,但它没有改变任何东西(它不应该改变)。

使用删除/修改的权限重新部署 portlet 并重新启动服务器后,我仍然看到分配给 portlet 的自定义操作/权限,但是当我选择 portlet 时,我看不到删除的权限,这正是我所看到的需要。

取消部署 portlet 是否会从 Liferay Portal 和门户数据库中删除所有关联的自定义操作/权限? 或者我需要进行单独的 liferay 服务调用才能做到这一点? 非常感谢这方面的任何投入。

Liferay 版本:6.1.2 CE GA3

portlet.properties

include-and-override=portlet-ext.properties
language.bundle=content.Language
resource.actions.configs=resource-actions/default.xml

资源操作/default.xml

<?xml version="1.0"?>
<!DOCTYPE resource-action-mapping PUBLIC "-//Liferay//DTD Resource Action Mapping 6.2.0//EN" "http://www.liferay.com/dtd/liferay-resource-action-mapping_6_2_0.dtd">

<resource-action-mapping>
    <portlet-resource>
        <portlet-name>1</portlet-name>
        <permissions>
            <supports>
                <action-key>ADD_SOMETHING</action-key>
                <action-key>CONFIGURATION</action-key>
                <action-key>VIEW</action-key>
            </supports>
            <site-member-defaults>
                <action-key>VIEW</action-key>
            </site-member-defaults>
            <guest-defaults>
                <action-key>VIEW</action-key>
            </guest-defaults>
            <guest-unsupported />
        </permissions>
    </portlet-resource>
</resource-action-mapping>

内容/语言.属性

action.ADD_SOMETHING=Add Something

portlet.xml

<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">
    <portlet>
        <portlet-name>1</portlet-name>
        <display-name>Sample Permissions</display-name>
        <portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>
        <init-param>
            <name>view-template</name>
            <value>/view.jsp</value>
        </init-param>
        <expiration-cache>0</expiration-cache>
        <supports>
            <mime-type>text/html</mime-type>
        </supports>
        <resource-bundle>content.Language</resource-bundle>
        <portlet-info>
            <title>Sample Permissions</title>
            <short-title>Sample Permissions</short-title>
            <keywords>Sample Permissions</keywords>
        </portlet-info>
        <security-role-ref>
            <role-name>administrator</role-name>
        </security-role-ref>
        <security-role-ref>
            <role-name>guest</role-name>
        </security-role-ref>
        <security-role-ref>
            <role-name>power-user</role-name>
        </security-role-ref>
        <security-role-ref>
            <role-name>user</role-name>
        </security-role-ref>
    </portlet>
</portlet-app>

liferay-portlet.xml

<liferay-portlet-app>
    <portlet>
        <portlet-name>1</portlet-name>
        <instanceable>true</instanceable>
    </portlet>
    <role-mapper>
        <role-name>administrator</role-name>
        <role-link>Administrator</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>guest</role-name>
        <role-link>Guest</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>power-user</role-name>
        <role-link>Power User</role-link>
    </role-mapper>
    <role-mapper>
        <role-name>user</role-name>
        <role-link>User</role-link>
    </role-mapper>
</liferay-portlet-app>

liferay-显示.xml

<?xml version="1.0"?>
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 6.2.0//EN" "http://www.liferay.com/dtd/liferay-display_6_2_0.dtd">

<display>
    <category name="category.sample">
        <portlet id="1" />
    </category>
</display>

liferay-插件-package.properties

name=Sample Permissions
module-group-id=liferay
module-incremental-version=1
tags=sample
short-description=This plugin shows how to use the permission service from a portlet.
long-description=
change-log=
page-url=http://www.liferay.com
author=Liferay, Inc.
licenses=LGPL
liferay-versions=6.2.0+

portal-dependency-jars=\
    jstl-api.jar,\
    jstl-impl.jar

portal-dependency-tlds=\
    c.tld

web.xml

<?xml version="1.0"?>

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <jsp-config>
        <taglib>
            <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
            <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
        </taglib>
    </jsp-config>
</web-app>

上面的代码运行完美,我可以在“定义角色的权限”中看到权限。

我正在寻找的是,如果我将 ADD_SOMETHING 操作修改为 ADD_SOMETHING_ELSE 或 删除 ADD_SOMETHING 操作并添加新的操作键 MY_NEW_ACTION, ADD_SOMETHING 权限是否会从门户中完全删除?如果不是,我需要采取哪些步骤来删除 ADD_SOMETHING 权限? 重新部署并重新启动服务器足以确保这些操作吗?

编辑: 基于普拉卡什的回应

//Ashok - Beanshell Script for ResourceAction Table Service
import com.liferay.portal.model.ResourceAction;
import com.liferay.portal.service.ResourceActionLocalServiceUtil;
import java.util.List;

List resourceList=ResourceActionLocalServiceUtil.getResourceActions(com.liferay.portal.kernel.dao.orm.QueryUtil.ALL_POS, com.liferay.portal.kernel.dao.orm.QueryUtil.ALL_POS);

for (ResourceAction resourceAction:resourceList) {
    System.out.println("Resource Name: " + resourceAction.getActionId());
    System.out.println("Resource Name: " + resourceAction.getName());
   //ResourceActionLocalServiceUtil.deleteResourceAction(giveActionIdHereForDeleting);
}

当您取消部署 portlet 或重新启动服务器时,不会从数据库中删除 portlet 的权限。为什么?

因为,取消部署 Portlet 并不一定意味着需要从数据库中删除数据,因此可以多次重新部署 Portlet。因此,liferay 正确地采取了保持数据完整的安全路线,除非通过数据库或某些服务手动删除数据。权限被视为数据,就像您为自定义资产存储的数据一样。

So you can delete the permissions from ResourceAction table by creating some service or through the beanshell scripting panel in control PanelServer AdministrationScriptingSelect Beanshell. You would also need to take care of the bitwiseValue and the permissions already set in the ResourcePermission table.

我建议将权限重命名为ResourceAction表而不是删除并添加新表,它可能会变得复杂。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Portlet 中删除自定义权限/操作 的相关文章

  • 如何在 LIFERAY 中从first.jsp 重定向到second.jsp?

    这怎么办 请帮我解决这个问题 jsp 内部的重定向并不是真正方便的想法 因为下面的 jsp 解析进入渲染阶段 而该阶段的目的是显示内容 另一方面 下面重定向到操作阶段 在这里您可以决定 portlet 接下来应该做什么 阅读本教程以更好地理
  • pip 安装失败,并显示:OSError: [Errno 13] 目录权限被拒绝

    pip install r requirements txt失败 但有以下异常OSError Errno 13 Permission denied usr local lib 出了什么问题以及如何解决这个问题 我正在尝试设置Django h
  • 获取Android中的文件权限(root)

    在尝试了一些获得 root 权限的设备后 我被这些文件困住了 假设我们在根文件夹中的某个位置有一个文件 我想从我的应用程序中读取 写入该文件 到目前为止我发现的唯一方法是更改 文件权限 例如 String cmd su c chmod 77
  • 复制文件权限,但不复制文件[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有同一目录树的两个副本 它们几乎都具有相同的文件 一个版本可能有几个额外或丢失的文件 但是 大多数文件对于两个目录都是相同的 具有相同的相对路径和所
  • liferay 7 中 liferay-portlet.xml 的等效文件是什么?

    我想在 liferay 7 中添加自定义用户通知 为此 如果我使用 liferay 6 2 我必须输入类似用户通知定义 and 用户通知处理程序类在 liferay portlet xml 中 但在liferay中我想问一下把这些条目放在哪
  • SharePoint 列表项权限

    我想以编程方式实现它 以便用户只能看到列表中的特定项目 基本上 在创建项目时运行的工作流程中 我将执行一些操作并通知一些人有关此项目的信息 我还希望它更改项目的权限 以便只有特定用户 根据项目内容在运行时查找 才能读取该项目 有权访问该列表
  • PHP mkdir 问题!

    我尝试创建一些像这样的目录 mkdir photos cat sku 0777 true 它使用 0777 权限创建第一个目录 但在创建第二个目录时使用 000 作为其权限 因此无法创建第三个目录 请问有解决方法吗 谢谢 理查德 这解决了这
  • 如何在添加到 Android AOSP 的自定义项目中设置文件权限

    我添加到 AOSP 设备所有者 APP 在packages apps myapp 创建目录 将 myapp apk device owner xml 复制到packages apps myapp 创建Android mk LOCAL PAT
  • Python读取时出现权限错误

    import os import rarfile file input Password List Directory rarFile input Rar File passwordList open os path dirname fil
  • Django 权限,自己编码还是使用应用程序?

    这个问题 我认为 是关于 Django 中的对象 行级别权限 我们正在构建一个社区 需要能够根据用户采取的操作设置权限 例如 在您发布了如此多的答案之前 您不应该能够启动线程 此外 用户应该能够删除属于自己的内容 根据 Django 文档
  • 如何在 Windows 上通过 XAMPP 避免(本地)Wordpress 中的图像 URL 出现 403 错误?

    Windows XP SP3 Xampp 1 8 1 PHP 5 4 7 WordPress 3 5 1 所有驱动器均使用 NTFS 我认为我的问题类似于this one https stackoverflow com questions
  • Server Word 自动化权限(一些答案和一些问题)

    我正在尝试使用Word自动化来计算Word文档中的页数 到目前为止 我遇到过这些错误 Retrieving the COM class factory for component with CLSID 000209FF 0000 0000
  • mkdir():权限被拒绝

    我的服务器上的所有文件都有 777 PHP 5 4 无安全模式 网站可以在其他服务器上运行 这是 Yii 框架 mkdir Permission denied var www html project framework web CAsse
  • Android 应用无法获取位置权限

    我的清单中有以下内容
  • MySQL:具有授予选项的用户无法授予创建用户

    我创建了一个具有 root 的用户 new user 如下所示 GRANT ALL ON labor TO new user WITH GRANT OPTION GRANT ALL ON labor TO new user localhos
  • 使用 java.nio.Files 更改 Linux 下的文件所有者组

    我有一台 Linux 服务器 并且正在 Java 中为服务器上的多个网站运行图像调整大小作业 网站文件由不同的操作系统用户 组拥有 新创建的缩略图 预览由运行调整大小作业的用户拥有 现在我正在谷歌搜索如何在调整大小程序中更改新创建的预览 缩
  • 在 iOS 8 中呈现相机权限对话框

    当我的应用程序在 iOS 8 上第一次尝试访问摄像头时 会向用户显示一个摄像头权限对话框 很像 iOS 7 中用于访问麦克风的麦克风对话框 在 iOS 7 中 可以预先调用麦克风权限对话框并查看是否授予了权限 请参阅这个问题 https s
  • adb shell 的 BroadcastReceiver 权限

    考虑一个简单的工具 使用BroadcastReceiver实现一个简单的目标 因为这不应该被其他应用程序使用 所以它定义了一个保护级别为signature or signatureOrSystem
  • “publish_actions”扩展权限是否可用于测试?

    我一直在尝试使用 publish actions 扩展权限来测试分数和成就 但是当我添加它时 它不会显示在 权限请求 页面中 就好像它被忽略了一样 我尝试了几种不同的方法 loginUrl facebook gt getLoginUrl a
  • 使用 C# 的服务 SACL ||使用 C# 获取具有 ACCESS_SYSTEM_SECURITY 权限的服务的句柄

    有人知道如何使用 C 获取远程服务上的 SACL 吗 我尝试了很多不同的方法 但基本上没有什么效果 我可以在本地计算机上获取 DACL 和 SACL 但在远程计算机上获取其中任何一个似乎都不可能 我所做的是创建一个名为ServiceSecu

随机推荐

  • 具有 Circe 实现的通用 json 解码器特征 [重复]

    这个问题在这里已经有答案了 我有一个用于将 json 解码器注入为项目组件依赖项的特征 trait JsonDecoder def apply T s String Option T 当我尝试用它来实现它时Circe https circe
  • 从 Xerces 获取架构数据类型

    我在 Xerces C 中使用 SAX2 并且希望在处理元素时获取 XML 架构数据 以便了解架构中定义的类型 我怎样才能做到这一点 好吧 我知道该怎么做了 关于该主题的可用文档很少 显然 我需要将 XMLReaderFactory cre
  • Rust - 调用内部值方法的枚举方法

    我有一个如下的枚举 enum Foo A X B Y C Z 其中 X Y 和 Z 是实现该方法的结构体bar 我希望能够定义一个方法bar on the Fooenum 以便调用其内部值对应的方法 现在我有这个 impl Foo pub
  • 在 extjs 中扩展电子邮件验证

    我在 ExtJs 6 0 1 250 版本中内置了以下用户注册表单 我有一个接受电子邮件字段 co com直到四个字 我需要处理最近的事情tlds并想要覆盖电子邮件验证逻辑 我尝试过validator并应用正则表达式但是regexText不
  • 更改 TableView 上 UISearchBars 的宽度

    我需要在我的 tableView 中创建两个 UISearchBar 我希望它们在桌子顶部的宽度相等 并排 我创建了两个 UISearchBar 出口 并为它们创建了属性和分配 我发现很难将它们都放置 我的意思是适合 视图中 我只看到一个搜
  • 如何跳过“按回车键启动合并解析工具”并自动打开mergetool

    Git 要求按返回按钮一一打开每个冲突文件的合并工具 gt git mergetool Normal merge conflict for local modified file remote modified file Hit retur
  • Linux下无root权限如何获取CPU序列号

    在没有root权限的Linux Ubuntu 下如何获取CPU序列号 我尝试了 cpuid 命令 它无需 root 权限即可工作 但似乎返回全零 我相信是因为需要在 BIOS 中更改某些内容 您能否建议我另一种从程序中检索 CPU 序列号的
  • 如何向 Google 表单添加登录信息以供用户填写

    我一直在网上阅读和观看许多教程 但我找不到可以最初使用单个输入文本加载某种对话框或登录页面的内容 这样我就可以使用应用程序脚本对其进行处理 onFormOpen 不会在完成表单的用户上触发 在我的 onSubmitForm 函数中 我有以下
  • 处理 Pylab 导入错误未定义符号

    我已经成功安装并从我的主目录调用 matplotlib myname sysimm51 python Python 2 7 6 default Nov 11 2013 13 13 15 GCC 4 4 7 20120313 Red Hat
  • 如何在 libcurl 中禁用 Expect 100 continue

    我正在使用 CURLOPT POST 发送 https 消息 在运行过程中 我的应用程序停留在 期望 100 继续 完成等待 100 继续 From 乔治的日志 当curl发送100 继续时 https gms tf when curl s
  • 如何在 Swift 中将字符串(数字)转换为 Int 数组

    我想知道如何在 Swift 中将 String 转换为 Int 数组 在Java中我总是这样做 String myString 123456789 int myArray new int myString lenght for int i
  • 无法在 Google Chrome 中获取 JSON 文件? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Chrome 中使用本地文件的 jQuery getJSON 问题 https stackoverflow com questions 2541949 problems with jquery g
  • webgl 中的多个对象

    我正在尝试将一些对象渲染到画布上 但我在理解哪些内容不起作用时遇到了一些困难 我目前正在构建两个对象 它们代表我想要渲染的两个网格 如果我创建一个网格 代码可以正常工作 所以我认为问题在于 当我构建两个或更多网格时 数据会被搞砸 这是网格数
  • 对于 FragmentStatePagerAdapter 创建的 Fragment,Fragment getView() 始终返回 null

    我读了很多关于片段的文章 发现其他人在检索片段视图时遇到问题 因为总是返回 null 但没有答案解决我的问题 我想做的是创建一个图片库 我有一个包含图像视图的片段 为了显示片段 我使用 android support v4 view Vie
  • 具有多个源的 Optaplanner 影子变量

    Optaplanner 允许影子变量拥有多个源 sources 但只有一个variableListsnerClass 在我的实现中 我有一个带有影子变量的规划实体 应该能够由两个列表器更改 但这似乎不受支持 还是我错了 有没有办法让两个监听
  • Java 9中外部模块A和B将包some.package导出到模块C

    当我使用外部库运行应用程序时 我得到以下信息 Error occurred during initialization of boot layer java lang module ResolutionException Modules m
  • 在 JavaScript 中使用正则表达式删除下划线

    就像标题所说 我想用正则表达式删除字符串中的下划线 这就是我所拥有的 function palindrome str str str toLowerCase replace a zA Z g s g 0 9 g if str split r
  • 为什么java在SSL握手期间不发送客户端证书?

    我正在尝试连接到安全的网络服务 尽管我的密钥库和信任库已正确设置 但握手失败 经过几天的沮丧 无休止的谷歌搜索和询问周围的每个人 我发现唯一的问题是java选择在握手期间不将客户端证书发送到服务器 具体来说 服务器请求客户端证书 CN Ro
  • Gmail API 配额单位费用

    我们正在构建一项利用 Gmail API 的服务 为了了解我们在扩展过程中的成本 我想知道使用 Gmail API 的成本是多少 我已按照以下说明进行操作https developers google com gmail api v1 re
  • 从 Portlet 中删除自定义权限/操作

    我已经能够根据 Liferay Plugins SDK 中的示例定义自定义 portlet 操作 权限 https github com liferay liferay plugins tree master portlets sample