Google app engine Spring安全性:autowire ProviderManager
我正在尝试使用Spring Security以编程方式验证用户登录/通行证,因此我需要访问Google app engine Spring安全性:autowire ProviderManager,google-app-engine,spring-security,spring,Google App Engine,Spring Security,Spring,我正在尝试使用Spring Security以编程方式验证用户登录/通行证,因此我需要访问ProviderManager。我希望它能自动注入我的@控制器 我的代码如下所示: import org.springframework.security.authentication.ProviderManager; // ... @Controller public class MyController { @Autowired private ProviderManager au
ProviderManager
。我希望它能自动注入我的@控制器
我的代码如下所示:
import org.springframework.security.authentication.ProviderManager;
// ...
@Controller
public class MyController {
@Autowired
private ProviderManager authenticationManager;
但当我尝试运行应用程序时,会收到以下错误消息:
No unique bean of type [org.springframework.security.authentication.ProviderManager] is defined:
expected single matching bean but found 2:
[org.springframework.security.authentication.ProviderManager#0, org.springframework.security.authenticationManager]
原因可能是什么?我如何解决
我在Spring3.0.1中使用SpringSecurity3.0.0-RC1,并且我没有定义任何ProviderManager
bean。我成功地使用了:
@Resource
private ProviderManager authenticationManager;
在其他项目中,但GAE不支持
javax.annotation.Resource
。上下文中有两个AuthenticationManager
s:
由org.springframework.security.authenticationManager
由隐式声明的提供程序(记住我、匿名等)填充,并将身份验证请求委托给org.springframework.security.authentication.ProviderManager#0
org.springframework.security.authenticationManager
@Autowired @Qualifier("org.springframework.security.authenticationManager")
上下文中有两个
AuthenticationManager
s:
由org.springframework.security.authenticationManager
由隐式声明的提供程序(记住我、匿名等)填充,并将身份验证请求委托给org.springframework.security.authentication.ProviderManager#0
org.springframework.security.authenticationManager
@Autowired @Qualifier("org.springframework.security.authenticationManager")
错误消息消失,包括身份验证管理器的别名:
<sec:authentication-manager alias="authenticationManager">
并升级到Spring Security 3.0.0 finale。错误消息消失,包括身份验证管理器的别名:
<sec:authentication-manager alias="authenticationManager">
并升级到Spring Security 3.0.0大结局。谢谢,我不知道@Qualifier annotation。你知道它是否与似乎也能解决问题的“alias”属性()有某种关联吗?@Guido:是的,你的解决方案的工作原理几乎相同
@Qualifier
在您的解决方案选择一个bean时,使用指定的名称选择该bean,因为它的别名与字段名匹配。谢谢,我不知道@Qualifier注释。你知道它是否与似乎也能解决问题的“alias”属性()有某种关联吗?@Guido:是的,你的解决方案的工作原理几乎相同@Qualifier
当您的解决方案选择一个bean时,使用指定的名称选择该bean,因为它的别名与字段名匹配。