Permissions Liferay-如何通过检查用户权限隐藏/显示按钮

Permissions Liferay-如何通过检查用户权限隐藏/显示按钮,permissions,liferay-6,Permissions,Liferay 6,我在liferay portal上托管了一个web应用程序。有某些功能,例如仅基于liferay中定义的自定义权限为某些用户显示保存按钮 我已经使用来自的引用在xml文件中配置了权限,如下所示 TESTPortlet 搜索按钮 保存按钮 删除按钮 我可以在我的portlet下门户的“权限”选项卡中看到上述权限。我还将SAVE_按钮权限分配给一个用户角色,比如说(TEST_ADMIN是我的角色) 如果登录用户具有SAVE_按钮权限,如何签入jsp或java 我尝试使用下面的代码进行访问检查

我在liferay portal上托管了一个web应用程序。有某些功能,例如仅基于liferay中定义的自定义权限为某些用户显示保存按钮

我已经使用来自的引用在xml文件中配置了权限,如下所示


TESTPortlet
搜索按钮
保存按钮
删除按钮
我可以在我的portlet下门户的“权限”选项卡中看到上述权限。我还将SAVE_按钮权限分配给一个用户角色,比如说(TEST_ADMIN是我的角色)

如果登录用户具有SAVE_按钮权限,如何签入jsp或java

我尝试使用下面的代码进行访问检查

<c:if test="<%= PortletPermissionUtil.contains(permissionChecker,plid.longValue(), "TESTPortlet_WAR_TESTPortlet5121","SAVE_BUTTON") %>">

然而,即使我在上面的检查中通过了搜索按钮权限,它也总是返回true。如果我传递了配置本身不存在的权限,则上述检查仅返回false。我猜上面的检查是为了知道权限是否在portlet中可用,并且不在用户访问级别

此外,如果我使用Liferay SVN repo中的以下代码,我总是得到值为Yes

%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<%@ taglib uri="http://liferay.com/tld/security" prefix="liferay-security" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>

<portlet:defineObjects />

<liferay-theme:defineObjects />

<%
long groupId = scopeGroupId;
String name = portletDisplay.getRootPortletId();
String primKey = portletDisplay.getResourcePK();
String actionId = "ADD_SOMETHING";
%>

Do you have the <i><liferay-ui:message key='<%= "action." + actionId %>' /></i> permission for this portlet?

<strong>

<c:choose>
    <c:when test="<%= permissionChecker.hasPermission(groupId, name, primKey, actionId) %>">
        Yes
    </c:when>
    <c:otherwise>
        No
    </c:otherwise>
</c:choose>

</strong>
%@taglib uri=”http://java.sun.com/jsp/jstl/core“prefix=“c”%>
您是否具有此portlet的权限?

对
不

任何人都可以帮助,如何检查登录用户是否有访问特定权限,以便我可以隐藏或显示我的按钮


提前谢谢。

你这样做是对的。应该行得通的。我不知道为什么会这样

做如下事情

创建一个角色

为您创建的角色定义权限。在应用程序中定义权限时,请选择您的portlet名称,然后您可以看到在xml文件中配置的所有操作

定义角色对您的操作的权限

现在将角色分配给任何用户

使用指定角色的用户登录,现在测试portlet功能

请参阅以下链接


请查看更多liferay资料

我现在可以使用权限了。问题是,在前面,我将我的portlet添加到用户的公共页面,似乎所有权限都默认继承给用户


一旦我将portlet移动到社区页面并将社区角色授予用户,我的上述代码就开始按预期工作。

您可以尝试使用ResourcePermissionLocalServiceUtil类而不是使用权限检查器吗?您可以找到许多方法。

此外,如果我使用Liferay SVN存储库中的以下代码,我总是会得到正确答案,不管用户是否有访问权限。嗨,米拉,谢谢你的回复。我按照你的建议试过了。创建了一个新角色并创建了一个新的常规用户。将权限分配给角色,然后将角色分配给用户。在文档中,我还看到必须使用下面的方法添加资源,但由于我不想对我的任何文件或java类应用权限,我认为,我不需要添加资源。这种理解正确吗。public void addResources(长公司ID、长组ID、长用户ID、字符串名称、字符串primKey、布尔portletActions、布尔addGroupPermissions、布尔addGuestPermissions)
%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<%@ taglib uri="http://liferay.com/tld/security" prefix="liferay-security" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>

<portlet:defineObjects />

<liferay-theme:defineObjects />

<%
long groupId = scopeGroupId;
String name = portletDisplay.getRootPortletId();
String primKey = portletDisplay.getResourcePK();
String actionId = "ADD_SOMETHING";
%>

Do you have the <i><liferay-ui:message key='<%= "action." + actionId %>' /></i> permission for this portlet?

<strong>

<c:choose>
    <c:when test="<%= permissionChecker.hasPermission(groupId, name, primKey, actionId) %>">
        Yes
    </c:when>
    <c:otherwise>
        No
    </c:otherwise>
</c:choose>

</strong>