0

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

有没有更好/更清洁的方式来获得StringKotlin 中的角色?

4

1 回答 1

1

你可以这样做。主要区别在于使用高阶函数map,它迭代一个集合,应用一个函数来创建一个相同大小但具有新类型的新集合。

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

return jwtUtil.getAllClaimsFromToken(authToken)
              .get("role", ArrayList::class.java)
              .map {
                    Role.valueOf((it as Map<String, String>)["authority"])
              }
于 2018-10-24T07:51:49.767 回答