在绝望的几个小时后,我试图找出为什么我的自定义身份验证管理器不是自动运行的,所以我来这里寻求一些帮助。所以我有了Web应用程序,在Spring上运行(使用Stripes)。身份验证是由我的自定义类完成的。一切都很好--在jsp中,我可以使用jsp标记,而每件事,http拦截器都可以正常工作。但是,当我试图将身份验证管理器自动添加到泽西岛的"REST类“时,一切都会出错,什么都不会被注入。
因此,在web xml中,我获得了两个上下文文件:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-context.xml
/WEB-INF/spring-security.xml
</param-value>
</context-param>Springsecurity.xml:
<context:component-scan base-package="org.springframework.security" />
<context:annotation-config/>
<http use-expressions="true" auto-config="true">
</http>
<authentication-manager alias="authManager">
<authentication-provider ref="AuthenticationManagerBean" />
</authentication-manager>
<beans:bean id="AuthenticationManagerBean" class="com.manager.services.MyAuthenticationManager"/>
<beans:bean id="expressionHandler" class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler" />在泽西岛的行动bean里面是这样的:
@Inject
@Qualifier("authManager")
protected AuthenticationManager authenticationManager;整个应用程序构建ok,jetty服务器启动没有问题( org.springframework.security.authenticationManager和MyAuthenticationManager都是成功的预安装),但是当尝试使用自动配置的authmanager时,im获得空指针。
编辑:--我已经成功地将AuthenticationManager自动添加到Stripes的Action中,但泽西的动作bean仍然存在问题,其中结构@Inject @限定符(.)AuthManager不起作用(但适用于其他自动添加的bean,同样没有“限定符,只需@Inject”)。
编辑2:在试图找出为什么Spring没有将authenticationManager注入泽西Beans之后,我解决了以下问题:
@Inject
@InjectParam("org.springframework.security.authenticationManager")
protected AuthenticationManager authenticationManager;我不知道它是好解决方案还是不好解决方案,但它正在工作,spring现在注入了正确的身份验证管理器。
发布于 2013-01-25 23:49:26
IANASG (I A不是条纹大师)我假设Action是一个条纹结构?如果它不是由spring管理的(实例化等等)然后不会注入任何东西,因为它是一个POJO,Spring对它一无所知。
这看起来不太对
<context:component-scan base-package="org.springframework.security" />基本包应该是代码中包含应该扫描的bean的包。
https://stackoverflow.com/questions/14532098
复制相似问题