我的设置:
在 Spring MVC 3.1 应用程序中,我有一个受 Spring Security 保护的服务:
@PreAuthorize("isAnonymous()") // ("hasRole('USER')") doesn't work either
public interface UserService extends UserDetailsService, PasswordEncoder
我正在尝试通过在我的上下文中声明的 bean 的 init() 方法使用此服务:
<bean class="com.xxx.scripts.FillDbWithInitialValues" init-method="contextInit" />
班上 :
public class FillDbWithInitialValues
{
@Autowired
UserService userService;
public void contextInit()
{
User test = userService.getUser(1);
}
}
我的 security.xml 文件的提取:
<sec:global-method-security pre-post-annotations="enabled" />
<sec:http auto-config="true" use-expressions="true">
(...)
</sec:http>
<sec:authentication-manager alias="authManager">
<sec:authentication-provider user-service-ref="userService">
<sec:password-encoder ref="userService" />
</sec:authentication-provider>
</sec:authentication-manager>
问题:
当我启动应用程序时,我得到一个异常:
org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: An Authentication object was not found in the SecurityContext
为什么会这样?如何对我的 bean 进行“身份验证”以便它可以使用该服务?