Spring Security – 多个身份validation提供程序

我的Web应用程序有多个身份validation管理器(一个用于API访问一个用于WEB访问)。 api应该只有一个基本的auth服务 – 通过spring security markup配置,如下所示:

           ... 

我无法内联身份validation提供程序,因为我希望它可以被子bean配置覆盖。

我的问题是我无法在security:authentication-provider元素上定义别名/ id以在authentication-manager中引用它。 有一个简单的解决方法吗?

解:

我终于想出了如何使用命名空间方式来实现它而不进入普通bean配置:)

        

请记住,这个Spring Security XML命名空间只是组织XML的一种巧妙方式。 您可以使用普通的配置实现完全相同的解决方案。 这样你就可以像往常一样使用ID。 此博客文章可能对您有所帮助。

在命名空间中,名称可以在带有名称的@Service("userDetailsService")java添加。

您还可以定义bean并将其添加到链中。

          [...]  

_authenticationManager是在命名空间中注册的bean的名称。

这将在基本身份validation之前执行。