Как получить пользовательские роли в JSP / Сервлет

Вам нужно объединить оба списка, чтобы получить соответствующие записи. Это должно исправить вашу ошибку

var matchDesc = list2.Join(list1, a => a.Code, b => b.TransCode, (a, b) => b.Desc).ToList();
11
задан WolfmanDragon 9 December 2008 в 02:26
поделиться

2 ответа

Читайте во всех возможных ролях или hardcode список. Затем выполните итерации по нему выполняющий isUserInRole и создайте список ролей, в которых находится пользователь, и затем преобразуйте список в массив.

String[] allRoles = {"1","2","3"};
HttpServletRequest request = ... (or from method argument)
List userRoles = new ArrayList(allRoles.length);
for(String role : allRoles) {
 if(request.isUserInRole(role)) { 
  userRoles.add(role);
 }
}

// I forgot the exact syntax for list.toArray so this is prob wrong here
return userRoles.toArray(String[].class);
6
ответ дан 3 December 2019 в 04:34
поделиться

Ответ грязен.

Сначала необходимо узнать то, что тип request.getUserPrincipal () возвращает в веб-приложении.

    System.out.println("type = " + request.getUserPrincipal().getClass());

Скажем, это возвращает org.apache.catalina.realm. GenericPrincipal.

Затем бросьте результат getUserPrincipal () к тому типу и используйте методы, которые он предоставляет.

    final Principal userPrincipal = request.getUserPrincipal();
    GenericPrincipal genericPrincipal = (GenericPrincipal) userPrincipal;
    final String[] roles = genericPrincipal.getRoles();

Я сказал, что это было грязным. Это не очень портативно также.

12
ответ дан 3 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: