Permissions 如何在Liferay中的自定义Portlet中启用对讨论(注释)的权限

Permissions 如何在Liferay中的自定义Portlet中启用对讨论(注释)的权限,permissions,liferay-6,portlet,Permissions,Liferay 6,Portlet,我知道以前有人问过这个问题,但似乎没有一个完整的答案,所以我将详细询问,并说明尝试了什么。在其他论坛上,它也被多次询问,要么没有答案,要么非常不完整,几乎没有细节 我已经能够使用liferay 6.1.20中的“liferay ui:discussion”标记库将注释(讨论)添加到我的自定义portlet中。在搜索之后,我最终使用以下设置使其工作: JSP页面 由于类扩展了MVCPortlet,我尝试使用invokeTagLibDiscussion,但权限结果没有变化。这来自《生命之光在行动》(

我知道以前有人问过这个问题,但似乎没有一个完整的答案,所以我将详细询问,并说明尝试了什么。在其他论坛上,它也被多次询问,要么没有答案,要么非常不完整,几乎没有细节

我已经能够使用liferay 6.1.20中的“liferay ui:discussion”标记库将注释(讨论)添加到我的自定义portlet中。在搜索之后,我最终使用以下设置使其工作:

JSP页面 由于类扩展了MVCPortlet,我尝试使用invokeTagLibDiscussion,但权限结果没有变化。这来自《生命之光在行动》(Liferay In Action,这是一个很好的信息来源)一书。因此,我尝试使用PortletActionInvoker.processAction方法,正如许多文章中提到的那样

问题: 所以,现在我的自定义portlet中添加了一个工作讨论,结果证明任何人都可以编辑任何其他人以前的评论。显然,我无法启动具有这种安全问题的portlet。再次深入研究,我发现了以下“答案”

  • 向资源操作文件添加权限。这似乎是最有希望的,因为Liferay代码将以这种方式利用权限系统是完全有意义的。我觉得有趣的是,为什么没有关于这个主题的教程/boods提到使用DELETE_讨论和UPDATE_讨论权限。(即)无论哪种方式,这都没有解决我的问题,即使问题的所有者表示这对他们有帮助
  • 另一个发布的“答案”指示在控制面板中“仅向特定角色添加权限”。他们不仅没有提供如何实现这一点的任何细节,而且也没有任何意义,因为这些权限操作不在portlet中
任何帮助都将不胜感激,因为这是我的定制portlet项目的最后一个组件,它阻碍了我将其发布到我的用户组


提前感谢。

我在权限方面也遇到了同样的问题,您解决了吗?您的用户得到解决方案了吗?我使用的是DXP SP4。
<portlet:actionURL 
            var="discussionURL"
            name="addDiscussion"/>

        <liferay-ui:discussion
            className="<%= Announcement.class.getName() %>"
            classPK="<%= announcement.getPrimaryKey() %>"
            formAction="<%= discussionURL %>"
            formName="fm2"
            ratingsEnabled="<%= false %>"
            redirect="<%= currentURL %>"
            subject="<%= announcement.getHeadline() %>"
            userId="<%= themeDisplay.getUserId() %>"
        />
public void addDiscussion(ActionRequest actionRequest, ActionResponse actionResponse){  
    try {           
        //invokeTaglibDiscussion(actionRequest, actionResponse);
        PortletActionInvoker.processAction("com.liferay.portlet.messageboards.action.EditDiscussionAction", null, actionRequest, actionResponse);
    } catch (Exception e) {  
        _log.error("There was an Error adding a comment to the Announcement");
    }  
}