2

我正在使用 Spring 3 并尝试在用户登录后从数据库中填充 Spring Security Authentication bean 的权限。

我有一个用于访问数据库的服务,例如

@Service
public class UserService {
    public User getUser(String username){...}
}

通常,我可以@Autowire使用此服务,但由于 Authentication bean 是由 Spring Security 创建的,它似乎无法访问该服务。我也尝试过使用ApplicationContextAware接口,但 Spring Security 似乎有一个单独的ApplicationContext.

我可以通过 MVC 从 MVC 访问 Authentication bean,getUserPrincipal()但是有没有办法可以从 Spring Security 身份验证的某个地方访问这个 @Service?

4

1 回答 1

0

我不确定您的设置是什么或您要做什么,但我会尝试根据基本的 spring-security 设置来帮助您。

首先,你的 UserService 应该实现UserDetailsS​​ervice

在你的 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>
于 2013-07-23T23:08:48.803 回答