【问题标题】:Access Spring MVC Service From Spring Security从 Spring Security 访问 Spring MVC 服务
【发布时间】:2013-07-19 16:30:41
【问题描述】:

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

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

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

通常情况下,我可以@Autowire 这个服务,但是因为 Authentication bean 是由 Spring Security 创建的,所以它似乎无法访问该服务。我也试过使用ApplicationContextAware接口,但是Spring Security似乎有一个单独的ApplicationContext

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

【问题讨论】:

  • 我不确定您要做什么。似乎您有一个用户注册到服务(即用户在数据库中的某个位置),用户登录,并且您想访问从数据库中获取的该用户的权限,对吗?

标签: java spring spring-mvc spring-security


【解决方案1】:

我不确定您的设置是什么或您想要做什么,但我会尝试根据基本的 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>

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 2013-08-14
    • 2013-01-17
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多