gpt4 book ai didi

java - 在 Principle 上存储多个值

转载 作者:行者123 更新时间:2023-12-02 00:34:08 27 4
gpt4 key购买 nike

我正在使用原理来存储当前用户 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")
}

使用

@GetMapping("{userId}/activationWidgetUrl")
fun getActivationWidgetUrl(principal: Principal, authentication: Authentication, @PathVariable userId: String): ActivationWidgetResponse? {

let id = principal.name
}

问题:我面临的情况是,我需要 session 中的更多详细信息,例如:-companyId-。

我想在原理上存储一个 User 对象,而不仅仅是一个字符串,但principal.name 默认返回字符串。

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

最佳答案

通过使用身份验证解决了此问题。

principalExtractor

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
}

}

关于java - 在 Principle 上存储多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57991287/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com