Java 如何按名称获取liferay用户拥有的每个角色的权限

Java 如何按名称获取liferay用户拥有的每个角色的权限,java,liferay,hook,liferay-6,portlet,Java,Liferay,Hook,Liferay 6,Portlet,我一直在研究访问控制。因此,在我们的liferay Portlet中,如何获得用户的所有权限,我已经通过 FacesContext facesContext = FacesContext.getCurrentInstance(); PortletRequest request = (PortletRequest) facesContext .getExternalContext().getRequest(); User user = (User) request.get

我一直在研究访问控制。因此,在我们的liferay Portlet中,如何获得用户的所有权限,我已经通过

FacesContext facesContext = FacesContext.getCurrentInstance();
PortletRequest request = (PortletRequest) facesContext
            .getExternalContext().getRequest(); 
User user = (User) request.getAttribute(WebKeys.USER);  
List<Role> roles = new ArrayList<Role>();

roles.addAll(RoleLocalServiceUtil.getUserRoles(user.getUserId()));

roles.addAll(RoleLocalServiceUtil.getUserRelatedRoles(user.getUserId(), user.getGroupIds()));
FacesContext FacesContext=FacesContext.getCurrentInstance();
PortletRequest请求=(PortletRequest)facesContext
.getExternalContext().getRequest();
User=(User)request.getAttribute(WebKeys.User);
列表角色=新的ArrayList();
roles.addAll(RoleLocalServiceUtil.getUserRoles(user.getUserId());
roles.addAll(RoleLocalServiceUtil.getUserRelatedRoles(user.getUserId(),user.getGroupId());
但是,我找不到任何东西可以用来确定给定用户是否具有与portlet相关的查看/配置/etc权限。
getResourcePermissions
为我提供了权限,但是通过ID,我如何才能找到权限名为view/config/update的权限


liferay 6.2

您可以在portlet中逐个检查用户是否具有该权限

ThemeDisplay themeDisplay= (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();
PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();

long groupId = themeDisplay.getScopeGroupId();
String name = (String)request.getAttribute(WebKeys.PORTLET_ID);
String primKey = portletDisplay.getResourcePK();
boolean view = permissionChecker.hasPermission(groupId, name, primKey, ActionKeys.VIEW);
boolean congiguration = permissionChecker.hasPermission(groupId, name, primKey, ActionKeys.CONFIGURATION);
boolean update = permissionChecker.hasPermission(groupId, name, primKey, ActionKeys.UPDATE);

我认为您可以尝试使用这个类PermissionFinderUtil。此类包含许多获取权限的函数。

yep-您肯定希望为此目的使用permissionChecker,而不关心以何种方式获取权限-例如,通过常规角色、站点角色、组织角色或团队。知道允许用户进行操作就足够了+1.