Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring安全身份验证管理器自动连接_Spring_Security_Authentication_Autowired - Fatal编程技术网

Spring安全身份验证管理器自动连接

Spring安全身份验证管理器自动连接,spring,security,authentication,autowired,Spring,Security,Authentication,Autowired,在几个绝望的小时试图找出为什么我的自定义身份验证管理器不能自动连接之后,我来到这里寻求一些帮助。 所以我有一个Web应用程序,运行在Spring上(带条纹)。身份验证由我的自定义类完成。一切都很好——在jsp中,我可以使用jsp标记,http拦截器可以正常工作。但当我尝试将身份验证管理器自动连接到Jersey的“REST类”中时,一切都出错了,没有注入任何内容 因此,在web xml中,我有两个上下文文件: <context-param> <param-name>

在几个绝望的小时试图找出为什么我的自定义身份验证管理器不能自动连接之后,我来到这里寻求一些帮助。 所以我有一个Web应用程序,运行在Spring上(带条纹)。身份验证由我的自定义类完成。一切都很好——在jsp中,我可以使用jsp标记,http拦截器可以正常工作。但当我尝试将身份验证管理器自动连接到Jersey的“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>
整个应用程序构建正常,jetty服务器启动时没有问题(MyAuthenticationManager和org.springframework.security.authenticationManager都已成功预安装),但当尝试使用autowired authmanager时,我得到了空指针

编辑: 我已经成功地将AuthenticationManager自动连接到Stripes的动作bean中,但Jersey的动作bean仍然存在问题,其中构造@Inject@Qualifier(…)对AuthManager不起作用(但对其他自动连接bean有效,尽管没有@Qualifier,只有@Inject)

编辑2: 几个小时后,我试图找出Spring为什么不将authenticationManager注入Jersey Bean,我通过以下方法解决了问题:

@Inject
@InjectParam("org.springframework.security.authenticationManager")
protected AuthenticationManager authenticationManager;
我不知道这是一个好的解决方案还是不好的解决方案,但它正在工作,spring现在注入了正确的身份验证管理器。

IANASG(我不是Stripes大师)。我假设Action Bean是Stripes构造?如果它不是由spring管理的(实例化的,等等),那么就不会向它注入任何东西,因为它是一个POJO,spring对它一无所知

这看起来不对

<context:component-scan base-package="org.springframework.security" />


基本包应该是代码中包含应该扫描的bean的包。

好吧,我已经被SpringBean注入到actionbeans的其他类中。对于Jersey,我使用Anotion Inject来实现RESTful bean,它对authentication manager不起作用,但对于其他bean(例如服务),它可以正常工作。
@Inject
@InjectParam("org.springframework.security.authenticationManager")
protected AuthenticationManager authenticationManager;
<context:component-scan base-package="org.springframework.security" />