我的應用程序使用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。 –