我的应用程序使用J2eePreauth认证供应商,这里是常见的代码来检索MYUSER对象:当getPrincipal()返回User对象并返回UserDetail对象时?
MyUser user = (MyUser)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
它的工作原理所有的时间,直到最近我可能会升级春季安全或某事,现在它给了我
org.springframework.security.core.userdetails.User cannot be cast to com.myapp.domain.MyUser
和类的MyUser
只是实现接口UserDetails
这是非常奇怪的是,铸造工程的所有关于最近upda的时间,但它崩溃了。
所以我的问题是什么时候SecurityContextHolder.getContext().getAuthentication().getPrincipal()
返回UserDetail对象,并不会当它返回org.springframework.security.core.userdetails.User
也许功能您正在使用的Spring版本?你是从哪个版本升级Spring Security的?主版本和次版本(即非补丁)可以/将更改API。 Spring应该有在线提供的迁移指南来进行主要版本升级。 –
我不认为你在问正确的问题。类org.springframework.security.core.userdetails.User实现UserDetails,使它们是一样的。 主体始终是返回对象的UserDetailsService的结果。你的UserDetailsService是什么样的? –
从spring-boot-starter-parent 1.3.6移到1.4.4后,我遇到同样的问题。根据maven中的依赖层次结构,Spring安全性是4.1.4。 –