我有以下代码,该代码从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
的角色?
答案 0 :(得分:1)
您可以这样做。主要区别在于使用了高阶函数map
,该函数对一个集合进行迭代,并应用一个函数来创建相同大小但新类型的新集合。
此外,除非您需要将函数的中间部分分配给变量以进行调试/记录,否则您可以简单地省略分配值并仅链接函数调用,但这会使它的可读性较差(值得商de):
return jwtUtil.getAllClaimsFromToken(authToken)
.get("role", ArrayList::class.java)
.map {
Role.valueOf((it as Map<String, String>)["authority"])
}