首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Liferay -如何通过检查用户权限来隐藏/显示按钮

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

Stack Overflow用户
提问于 2014-06-05 06:23:34
回答 3查看 2.9K关注 0票数 4

我有一个web应用程序托管在救生筏门户上。有一些特性,比如只根据救生筏中定义的自定义权限为特定用户显示一个保存按钮。

我使用来自http://www.liferay.com/community/wiki/-/wiki/Main/Permissioning+in+Plugin+Environment#section-Permissioning+in+Plugin+Environment-DEFINING+PERMISSION+FOR+A+PORTLET+RESOURCE+IN+PLUGIN+ENVIRONMENT的引用配置了xml文件中的权限,如下所示

代码语言:javascript
复制
<?xml version="1.0"?>
<resource-action-mapping>
    <portlet-resource>
        <portlet-name>TESTPortlet</portlet-name>
                <permissions>
        <supports>
            <action-key>SEARCH_BUTTON</action-key>
            <action-key>SAVE_BUTTON</action-key>
            <action-key>DELETE_BUTTON</action-key>
        </supports> 
         </permissions>
    </portlet-resource>
</resource-action-mapping>

我可以在我的portlet下的门户中看到上面的权限选项卡。我还将SAVE_BUTTON权限分配给了其中一个用户角色(TEST_ADMIN是我的角色)。

如果登录用户具有SAVE_BUTTON权限,如何签入jsp或java。

我试着用下面的代码进行访问检查。

代码语言:javascript
复制
<c:if test="<%= PortletPermissionUtil.contains(permissionChecker,plid.longValue(), "TESTPortlet_WAR_TESTPortlet5121","SAVE_BUTTON") %>">

然而,即使我通过了上述检查中的SEARCH_BUTTON permisison,它也总是返回true。上面的检查只返回false,如果我传递的权限不存在于我的配置本身。我猜上面的检查是为了知道这些权限在portlet中是否可用,是否处于用户访问级别。

另外,如果我使用来自的以下代码,我总是得到值为Yes。

代码语言:javascript
复制
%@ 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>

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

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-08 01:36:51

我现在能够使用权限。问题是,在前面,我将portlet添加到用户公共页面中,在默认情况下,所有权限似乎都继承给了用户。

当我将portlet移动到一个社区页面并将社区角色交给用户后,我的上述代码就开始按预期工作了。

票数 1
EN

Stack Overflow用户

发布于 2014-06-05 10:20:42

你所做的是correct.it应该工作,我不知道为什么会这样。

如下所示

创建一个角色。

定义您的created..when权限,在应用程序中定义权限,选择您的portlet名称,然后您可以看到在xml中配置的所有操作。

定义角色的权限,尊重您的行为。

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

与您指定的角色一起登录,现在测试portlet功能。

请参阅以下链接

https://www.liferay.com/documentation/liferay-portal/6.1/development/-/ai/security-and-permissio-4

请查看LiferaySavvy.com以获取更多救生筏材料

票数 0
EN

Stack Overflow用户

发布于 2014-06-10 01:45:21

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24053002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档