Код: Выделить всё
@Component
class MyJob : Job {
@Autowired
internal lateinit var objectMapper: ObjectMapper
override fun execute(context: JobExecutionContext) {
val loader = javaClass.classLoader
val modules = SecurityJackson2Modules.getModules(loader)
objectMapper.registerModules(modules)
val jobDataMap = context.jobDetail.jobDataMap
val context = objectMapper.readValue(jobDataMap["context"] as String, SecurityContextImpl::class.java)
SecurityContextHolder.setContext(context)
// other task code
}
}
Код: Выделить всё
{
"@class" : "org.springframework.security.core.context.SecurityContextImpl",
"authentication" : {
"@class" : "org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken",
"authorities" : [ "java.util.Collections$UnmodifiableRandomAccessList", [ {
"@class" : "org.springframework.security.core.authority.SimpleGrantedAuthority",
"authority" : "ROLE_Corporate_CLIENT"
} ] ],
"details" : {
"@class" : "org.springframework.security.web.authentication.WebAuthenticationDetails",
"remoteAddress" : "127.0.0.1"
},
"authenticated" : true,
"principal" : {
"@class" : "my.package.UserInfo",
"origin" : "EXTERNAL",
"subject" : "9007-04-19-08.06.54.856184",
"displayName" : "9007-04-19-08.06.54.856184",
"roles" : [ "java.util.Collections$SingletonList", [ "Corporate_CLIENT" ] ]
},
"credentials" : "9007-04-19-08.06.54.856184"
}
}
[img]https://i .sstatic.net/pB8oLaAf.png[/img]
Тем не менее, objectMapper.readValue не может десериализовать этот фрагмент
Код: Выделить всё
{"@class":"org.springframework.security.core.authority.SimpleGrantedAuthority","authority":"ROLE_Corporate_CLIENT"}
Что мне не хватает?
Подробнее здесь: https://stackoverflow.com/questions/784 ... re-ignored