在Java Portlet中获得用户角色

时间:2014-03-24 20:21:16

标签: java liferay portlet

我正在使用liferay服务器来使用portlet构建门户应用程序。

我想在网站上显示一些用户特定数据。

如何在liferay portlet中获取登录用户的角色?

我的示例java代码 -

@Override
public void processAction(ActionRequest request, ActionResponse response)
    throws PortletException, IOException {
  String data = ""; 
  if(userRole = "Admin") {    //How to get this user role? 
     data = "Admin user logged in";
  } else if(userRole = "Guest"){
     data = "Guest user logged in"; 
  }
  request.setAttribute("data", data);
}

和JSP代码 -

<script>
    function WhoLoggedIn() {
        document.getElementById("gameForm").submit();
    }
</script>
<div onClick="WhoLoggedIn()">Click HERE</div>
<div>${data}</data>

感谢。

1 个答案:

答案 0 :(得分:4)

在portlet的代码中,您可以使用portlet规范中定义的以下方法:

portletRequest.isUserInRole("roleName");

注意: Liferay不会在默认提供的任何portlet中使用isUserInRole()方法。相反,它直接使用Liferay的许可系统,以实现更精细的安全性。

有关详细信息,请参阅以下链接

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

您可以使用PermissionChecker中的某些方法。

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

permissionChecker.isCompanyAdmin() //   Returns true if the user is an administrator of their company.
permissionChecker.isOmniadmin()  //      Returns true if the user is a universal administrator.
permissionChecker.isGroupAdmin(long groupId)  //  Returns true if the user is an administrator of the group.

有关PermissionChecker的更多信息,请参阅以下链接 http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/security/permission/PermissionChecker.html

你也可以探索RoleLocalServiceUtil类Liferay

http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/RoleLocalServiceUtil.html