如何在没有应用程序上下文的情况下使用spring-security过滤器?

时间:2011-07-26 11:23:55

标签: java spring-security

我想直接使用java代码中没有spring应用程序上下文(或spring容器)的spring-security web-filters。

这可能吗?我可以直接调用不同的弹簧实时循环方法吗?如果有的话,是否有一个如何做到这一点的样本(需要注意哪些不同的接口及其排序)?

2 个答案:

答案 0 :(得分:5)

  

我想在没有spring应用程序上下文的情况下使用spring-security web-filters

你不能。

因为您在web.xml中定义了过滤器链代理:

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

DelegatingFilterProxy实际上希望在那里找到您的contextConfigLocation和有效的配置文件:

<context-param>
    <param-name>contextConfigLocation</param-name>

    <!-- This must be valid otherwise your .war deployment will fail -->
    <param-value>WEB-INF/spring-contexts/spring-contexts.xml</param-value>
</context-param>

答案 1 :(得分:3)

我认为这是可能的但不值得。

Spring是一个复杂的框架,可以隔离您配置Java应用程序的负担。你为什么要在没有Spring的情况下使用Spring?

关于你的问题,以前的Spring安全性Acegi声称可以在没有Spring的情况下使用。

所以你可以试试,但你的主要问题是在服务器启动时加载整个应用程序。您需要复制包含ContextLoaderListener的功能。

尝试创建自己的侦听器而不是

    <!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

然后为您的应用程序配置主servlet(因为我假设您不想使用Spring MVC)和安全筛选器为 Simeon 表示。

祝你好运。

或者,您可以尝试Apache SHIRO