私のアプリケーションは、J2eePreauth認証プロバイダを使用しており、ここでMyUserとオブジェクトを取得するための一般的なコードです:getPrincipal()がUserオブジェクトを返し、UserDetailオブジェクトを返すときは?
MyUser user = (MyUser)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
最近、私はアップグレード春のセキュリティやSTHは今、それは私に
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では、メジャーリリースのアップグレードのためにオンラインで移行ガイドを入手する必要があります。 –
私はあなたが正しいquesitonを求めているとは思わない。 org.springframework.security.core.userdetails.UserクラスはUserDetailsを実装しています。 プリンシパルは、常にオブジェクトを返したUserDetailsServiceの結果です。あなたのUserDetailsServiceはどのように見えますか? –
spring-boot-starter-parent 1.3.6から1.4.4に移行した後、同じ問題が発生しています。 Springのセキュリティは、Mavenの依存関係階層に従って4.1.4です。 –