从 JWT 声明中获取角色的更好的 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

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

此外,除非你需要将函数的中间部分分配给变量以进行调试/日志记录,否则你可以简单地省略分配值并只链函数调用,但它会使它不那么容易阅读(有争议(:

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

最新更新