我正在使用 Spring 3 并尝试在用户登录后从数据库中填充 Spring Security Authentication bean 的权限。
我有一个用于访问数据库的服务,例如
@Service
public class UserService {
public User getUser(String username){...}
}
正常情况下,我可以@Autowire
这个服务,但是因为Authentication bean是Spring Security创建的,所以好像访问不了这个服务。我也尝试使用 ApplicationContextAware
接口(interface),但 Spring Security 似乎有一个单独的 ApplicationContext
。
我可以通过 getUserPrincipal()
从 MVC 访问 Authentication bean,但是有什么方法可以从 Spring Security 身份验证中的某个地方访问这个 @Service 吗?
最佳答案
我不确定你的设置是什么或你想做什么,但我会尝试根据基本的 spring-security 设置来帮助你。
首先,您的 UserService 应该实现 UserDetailsService
在你的 web.xml 中
<!-- Context Configuration locations for Spring XML files -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:META-INF/spring/some-application-service.xml
/WEB-INF/security.xml
</param-value>
</context-param>
/WEB-INF/security.xml
<!--
Assuming UserService is in com.sample.security package.
-->
<context:component-scan base-package="com.sample.security"/>
<authentication-manager>
<authentication-provider user-service-ref="userService" />
</authentication-manager>
关于java - 从 Spring Security 访问 Spring MVC 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17751115/