2014-03-24 83 views
2

我正在使用liferay服務器來構建使用Portlet的門戶應用程序。在Java 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> 

感謝。

回答

4

在portlet的代碼,你可以使用以下方法,在Portlet規範定義:

portletRequest.isUserInRole("roleName"); 

注: Liferay的不使用的isUserInRole()方法中的任何默認提供的Portlet的。相反,它直接使用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

+0

我可以使用方法的isUserInRole在processAction方法用的ActionRequest目的? – webExplorer

+0

是的,你可以actionRequest.isUserInRole(「roleName」);其中actionRequest是ActionRequest的引用 – Gautam