我有以下代码,它从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
?
你可以这样做。主要区别在于使用高阶函数map
,它迭代一个集合,应用一个函数来创建大小相同但类型新的新集合。
此外,除非你需要将函数的中间部分分配给变量以进行调试/日志记录,否则你可以简单地省略分配值并只链函数调用,但它会使它不那么容易阅读(有争议(:
return jwtUtil.getAllClaimsFromToken(authToken)
.get("role", ArrayList::class.java)
.map {
Role.valueOf((it as Map<String, String>)["authority"])
}