Лучший котлинский способ получения ролей от JWT Claims - PullRequest
0 голосов
/ 24 октября 2018

У меня есть следующий код, который получает роли пользователя от io.jsonwebtoken.Claims объекта

val claims = jwtUtil.getAllClaimsFromToken(authToken)
val rolesMap = claims.get("role", ArrayList::class.java)
val roles = ArrayList<Role>()
for (rolemap in rolesMap) {
    roles.add(Role.valueOf((rolemap as LinkedHashMap<String, String>)["authority"] as String))
}

Есть ли лучший / более чистый способ получить роли (и) как String в Kotlin?

1 Ответ

0 голосов
/ 24 октября 2018

Вы могли бы сделать это так.Основным отличием является использование функции высшего порядка map, которая выполняет итерацию коллекции, применяя функцию для создания новой коллекции того же размера, но нового типа.

Кроме того, если вам не требуется промежуточныйчасти функции, которые будут назначены переменным для целей отладки / ведения журнала, тогда вы можете просто пропустить присвоение значений и просто цепочку вызовов функций, но это может сделать его менее легким для чтения (дискуссионным):

return jwtUtil.getAllClaimsFromToken(authToken)
              .get("role", ArrayList::class.java)
              .map {
                    Role.valueOf((it as Map<String, String>)["authority"])
              }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...