将用户和组从 WLS 获取到自定义页面

Getting users and groups form WLS to Custom Page

我在 WLS 12c 中使用 SQL 身份验证器在安全领域配置了用户和组。

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

当我使用 wls 用户 (ie.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} 获取角色,请在登录时帮助我获取用户组。

预期的 OUTPUT 应该是 MANAGER 而我的输出是 NULL。

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

securityContext el 表达式包含以下值:

  • 已验证
  • 地区可见
  • taskflowViewable
  • userGrantedPermission
  • userGrantedRessource
  • userInAllRoles
  • 用户角色
  • 用户名

因为您似乎知道所有预期的角色,您可以显示 MANAGER 执行类似的操作:

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

或使用渲染属性:

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

...

旁注:

  • userInAllRoles['ROLE1','ROLE2'] return 如果用户有 ROLE1 和 ROLE2
  • ,则为真
  • userInRole['ROLE1','ROLE2'] return 如果用户具有 ROLE1 或 ROLE2
  • ,则为真