Получение пользователей и групп из WLS на пользовательскую страницу - PullRequest
0 голосов
/ 24 января 2019

Я настроил пользователей и группы в области безопасности, используя SQL Authenticator в WLS 12c.

Например: 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();

Точно так же я хочу захватить группу для текущего пользователя, т.е. АДМИНИСТРАТОР и вывод должен быть МЕНЕДЖЕР.

Я использовал EL как #{securityContext.userRoles} для получения роли и любезно помогаю мне получить группу пользователей во время входа в систему.

Ожидаемый выход должен быть MANAGER, а мой вывод - NULL.

1 Ответ

0 голосов
/ 24 января 2019

Вы получаете НЕДЕЙСТВИТЕЛЬНЫЙ вывод, потому что securityContext не содержит объект с именем "userRoles" в привязках ADF.

Выражение securityContext el содержит следующее значение:

  • Заверенные
  • regionViewable
  • taskflowViewable
  • userGrantedPermission
  • userGrantedRessource
  • userInAllRoles
  • userInRole
  • 1020 * имя_пользователя *

Поскольку вы, похоже, знаете все ожидаемые роли, вы можете отобразить 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'] возвращает true, если у пользователя есть ROLE1 и ROLE2
  • userInRole ['ROLE1', 'ROLE2'] возвращает true, если у пользователя есть ROLE1 или ROLE2
...