非同期サポートで Spring 3.2 を使用する。Callable
匿名メソッド内で一度セキュリティ コンテキストが失われる
@RequestMapping(value = "/home", method = RequestMethod.GET)
public Callable<String> home(final Model model) {
return new Callable<String>() {
@Override
public String call() throws Exception {
model.addAttribute("homeService", homeService.findId(1));
return "home";
}
};
}
これは、内部の Bean に適用されるセキュリティ デコレータです。servlet-context.xml
<beans:bean id="homeService" class="example.service.HomeServiceImpl" scope="request">
<security:intercept-methods>
<security:protect access="ROLE_USER" method="find*"/>
</security:intercept-methods>
</beans:bean>
これは、セキュリティ コンテキストが存在しないためのエラーです。
org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: An Authentication object was not found in the SecurityContext