首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >没有web.xml的Spring Security

没有web.xml的Spring Security
EN

Stack Overflow用户
提问于 2013-01-08 06:24:14
回答 7查看 23.9K关注 0票数 20

在使用Spring的新WebApplicationInitializer接口而不是web.xml文件的web应用程序中添加Spring Security的推荐方法是什么?我正在寻找的等价物是:

代码语言:javascript
复制
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

更新

提供的答案是合理的,但它们都假设我有一个servletContext实例。我查看了Spring的层次结构,我没有看到任何对WebApplicationInitializer上下文的访问,除非我选择覆盖Spring的一个初始化器方法。AbstractDispatcherServletInitializer.registerServletFilter似乎是个明智的选择,但它不会默认使用URL模式映射,而且如果有更好的方法,我不想更改所有内容的过滤器注册。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-01-08 06:42:44

我就是这样做的:

代码语言:javascript
复制
container.addFilter("springSecurityFilterChain", new DelegatingFilterProxy("springSecurityFilterChain"))
                    .addMappingForUrlPatterns(null, false, "/*");

容器是ServletContext的一个实例

票数 27
EN

Stack Overflow用户

发布于 2015-06-18 04:58:14

Spring Security Reference回答了这个问题,解决方案取决于您是否将Spring Security与Spring或Spring MVC结合使用。

在没有Spring或Spring MVC的情况下使用Spring Security

如果你在Spring或Spring MVC中使用Spring Security,而不是(也就是说,你没有现有的WebApplicationInitializer),那么你需要提供以下额外的类:

代码语言:javascript
复制
import org.springframework.security.web.context.*;

public class SecurityWebApplicationInitializer
    extends AbstractSecurityWebApplicationInitializer {

    public SecurityWebApplicationInitializer() {
        super(SecurityConfig.class);
    }
}

其中SecurityConfig是Spring Security Java配置类。

将Spring安全与Spring或Spring MVC结合使用

如果您将Spring Security与Spring或Spring MVC一起使用(即您有一个现有的WebApplicationInitializer),那么首先您需要提供以下额外的类:

代码语言:javascript
复制
import org.springframework.security.web.context.*;

public class SecurityWebApplicationInitializer
    extends AbstractSecurityWebApplicationInitializer {
}

然后,您需要确保在现有的Spring或Spring MVC WebApplicationInitializer中声明了Spring Security Java配置类,在本例中为SecurityConfig。例如:

代码语言:javascript
复制
import org.springframework.web.servlet.support.*;

public class MvcWebApplicationInitializer
    extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] {SecurityConfig.class};
    }

    // ... other overrides ...
}
票数 16
EN

Stack Overflow用户

发布于 2013-01-08 19:00:58

代码语言:javascript
复制
Dynamic securityFilter = servletContext.addFilter(AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME, DelegatingFilterProxy.class);
securityFilter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), false, "/*");

EnumSet.allOf(DispatcherType.class),以确保您不仅为默认DispatcherType.REQUEST,而且为DispatcherType.FORWARD,等添加映射。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14205140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档