从JWT Claims获得角色的更好Kotlin方法

时间:2018-10-24 06:40:46

标签: kotlin

我有以下代码,该代码从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))
}

在Kotlin中是否有更好/更干净的方法来获得String的角色?

1 个答案:

答案 0 :(得分:1)

您可以这样做。主要区别在于使用了高阶函数map,该函数对一个集合进行迭代,并应用一个函数来创建相同大小但新类型的新集合。

此外,除非您需要将函数的中间部分分配给变量以进行调试/记录,否则您可以简单地省略分配值并仅链接函数调用,但这会使它的可读性较差(值得商de):

return jwtUtil.getAllClaimsFromToken(authToken)
              .get("role", ArrayList::class.java)
              .map {
                    Role.valueOf((it as Map<String, String>)["authority"])
              }