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

Permissions 从Portlet中删除自定义权限/操作,permissions,liferay,liferay-6,Permissions,Liferay,Liferay 6,我已经能够在Liferay插件SDK中基于此示例定义自定义portlet操作/权限 我想知道从portlet中删除自定义portlet操作/权限(不是模型权限)需要采取哪些必要步骤 我记得当我使用修改过的自定义操作/权限重新部署portlet时,旧的自定义操作/权限仍然存在 我尝试从Tomcat的webapps中删除portlet文件夹,结果成功注销。但是,在我再次部署portlet并从相应的XML中删除自定义操作/权限之后,我仍然可以在定义角色权限中看到权限 我尝试在Liferay的控制面板

我已经能够在Liferay插件SDK中基于此示例定义自定义portlet操作/权限

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

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

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

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

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

取消部署portlet是否会从Liferay门户和门户数据库中删除所有关联的自定义操作/权限? 或者我需要单独拨打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
action.ADD_SOMETHING=Add Something
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
资源操作/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>
portlet.xml

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>

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

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

因此,您可以通过创建一些服务或通过控制面板中的beanshell脚本面板,从
ResourceAction
表中删除权限→ 服务器管理→ 脚本→ 选择Beanshell。您还需要注意bitwiseValue和
ResourcePermission
表中已设置的权限

我建议重命名
ResourceAction
表中的权限,而不是删除和添加新权限,这可能会变得复杂


希望这有帮助。

正是我想要的。感谢@PrakashI在数据库中运行了以下SQL:更新resourceaction集名称='myportlet_WAR_mywar_old'其中名称='myportlet_WAR_mywar';然后重新启动Liferay。成功了。
<?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>
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
<?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>
//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);
}