次の問題に直面しました。子スレッドから現在ログインしているユーザー名を取得する必要があり、この目的のためにMODE_INHERITABLETHREADLOCAL
SecurityContextHolder の戦略を使用します。ユーザーがログオフして再度ログインするまで、すべて正常に機能します。その後、MODE_INHERITABLETHREADLOCAL
動作しません。原因がわからず、解決策を見つけようとします。SecurityContextHolder.getContext().getAuthentication()
問題は、子スレッドから呼び出された re-login の後、 null
( return ) をSecurityContextHolder.getContextHolderStrategy()
返すことMODE_INHERITABLETHREADLOCAL
です。security-config.xml でコンテキストホルダー戦略を設定しました
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="org.springframework.security.core.context.SecurityContextHolder"/>
<property name="targetMethod" value="setStrategyName"/>
<property name="arguments"><list><value>MODE_INHERITABLETHREADLOCAL</value></list></property>
</bean>
誰かが私を助けてくれたらありがたいです。前もって感謝します!