使用户和组从WLS到自定义页面

时间:2019-01-24 06:45:52

标签: oracle-adf weblogic12c

我已经在WLS 12c中使用SQL Authenticator在安全领域中配置了用户和组。

例如:ADMIN是用户,而MANAGER是WLS中的组,我已经将ADMIN用户映射到MANAGER组。

当我使用wls用户(即ADMIN)登录时,它会导航到相应的自定义页面,并且可以使用以下EL #{securityContext.userName}来获取用户     或Java代码:

ADFContext adfCtx = ADFContext.getCurrent();  
SecurityContext secCntx = adfCtx.getSecurityContext();  
String user = secCntx.getUserPrincipal().getName();  
String userName = secCntx.getUserName();
String[]  Roles = secCntx.getUserRoles();

类似地,我想捕获当前正在记录的用户的组,即。 ADMIN和输出应为MANAGER。

我使用EL作为#{securityContext.userRoles}来获得该角色,并请我在登录期间帮助我获取用户组。

预期的输出应该为MANAGER,而我的输出为NULL。

1 个答案:

答案 0 :(得分:0)

您将得到NULL输出,因为securityContext在ADF绑定中不包含名为“ userRoles”的对象。

securityContext el表达式包含以下值:

  • 已认证
  • regionViewable
  • taskflowViewable
  • userGrantedPermission
  • userGrantedRessource
  • userInAllRoles
  • userInRole
  • 用户名

由于您似乎已经知道所有预期的角色,因此可以显示MANAGER做类似的事情:

<af:outputText value="{securityContext.userInAllRoles[‘MANAGER’]?'MANAGER':'NOT MANAGER'}" id="ot_1"/>

或使用rendered属性:

<af:outputText rendered="{securityContext.userInAllRoles[‘MANAGER’]}" value="MANAGER" id="ot_1"/>
<af:outputText rendered="{securityContext.userInAllRoles[‘EMPLOYEE’]}" value="EMPLOYEE" id="ot_2"/>

...

旁注:

    如果用户具有ROLE1和ROLE2,则
  • userInAllRoles ['ROLE1','ROLE2']返回true
  • 如果用户具有ROLE1或ROLE2,则
  • userInRole ['ROLE1','ROLE2']返回true