Java 原则上存储多个值

Java 原则上存储多个值,java,spring,kotlin,spring-security,oauth,Java,Spring,Kotlin,Spring Security,Oauth,我用这个原理来存储当前的用户id 存储 val principalExtractor: (MutableMap<String, Any?>) -> Any? = { params -> val session = params.get("session") as MutableMap<String, Any?> val user = session.get("user") as MutableMap<String,

我用这个原理来存储当前的用户id

存储

   val principalExtractor: (MutableMap<String, Any?>) -> Any? = { params ->
        val session = params.get("session") as MutableMap<String, Any?>
        val user = session.get("user") as MutableMap<String, Any?>
        user.get("email")
    }
问题: 我面临的情况是,我需要从会议中获得更多细节,例如:-companyId-

我想在principle上存储一个用户对象,而不仅仅是一个字符串,但是principle.name默认返回字符串

问题:
我如何根据原则(子类?)存储对象,或者有更好的方法吗?

通过使用身份验证解决了这个问题

拖拉机

val principalExtractor: (MutableMap<String, Any?>) -> Any? = { params ->
        val session = params.get("session") as MutableMap<String, Any?>
        val user = session.get("user") as MutableMap<String, Any?>
        val mapper = ObjectMapper()
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
        val userDetails = mapper.convertValue(user, UserDetails::class.java)
        userDetails
    }
val principalExtractor: (MutableMap<String, Any?>) -> Any? = { params ->
        val session = params.get("session") as MutableMap<String, Any?>
        val user = session.get("user") as MutableMap<String, Any?>
        val mapper = ObjectMapper()
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
        val userDetails = mapper.convertValue(user, UserDetails::class.java)
        userDetails
    }
@GetMapping("{userId}/activationWidgetUrl")
    fun getActivationWidgetUrl(authentication: Authentication, @PathVariable userId: String): ActivationWidgetResponse? {

       (authentication.principal as UserDetails).let { userDetails ->
            let id = userDetails.id
        }

}