我已经在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。
答案 0 :(得分:0)
您将得到NULL输出,因为securityContext在ADF绑定中不包含名为“ userRoles”的对象。
securityContext el表达式包含以下值:
由于您似乎已经知道所有预期的角色,因此可以显示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"/>
...
旁注: