如何在WebFlux WAR应用程序中激活Spring Security [英] How to activate Spring Security in a webflux war application

查看:14
本文介绍了如何在WebFlux WAR应用程序中激活Spring Security的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在WAR打包应用程序中激活webflux安全。我使用的是Spring5内置AbstractAnnotationConfigDispatcherHandlerInitializer,但它不起作用。

public class AppIntializer extends AbstractAnnotationConfigDispatcherHandlerInitializer {

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

但似乎没有启用Spring Security WebFilter。Spring Security 5不包括特定于WebApplicationInitializer以激活Spring安全筛选器链的反应堆。

Stack:Spring Security 5.0.0.M4

源代码:https://github.com/hantsy/spring-reactive-sample/blob/master/war/src/main/java/com/example/demo/AppIntializer.java

推荐答案

您应该只能使用AbstractAnnotationConfigDispatcherHandlerInitializer。但是,AbstractDispatcherHandlerInitializer中有一个bug。您可以使用以下命令解决此问题:

public class AppInitializer extends AbstractAnnotationConfigDispatcherHandlerInitializer {

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

    protected void registerDispatcherHandler(ServletContext servletContext) {
        String servletName = getServletName();
        ApplicationContext applicationContext = createApplicationContext();

        refreshApplicationContext(applicationContext);
        registerCloseListener(servletContext, applicationContext);

        HttpHandler httpHandler = WebHttpHandlerBuilder.applicationContext(applicationContext)
            .build();
        ServletHttpHandlerAdapter handlerAdapter = new ServletHttpHandlerAdapter(httpHandler);

        ServletRegistration.Dynamic registration = servletContext.addServlet(servletName, handlerAdapter);

        registration.setLoadOnStartup(1);
        registration.addMapping(getServletMapping());
        registration.setAsyncSupported(true);

        customizeRegistration(registration);
    }
}

在Spring 5.0.2.RELEASE+(计划于2017年11月15日发布)中,您可以改为扩展AbstractReactiveWebInitializer

public class AppIntializer extends AbstractReactiveWebInitializer {

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

这篇关于如何在WebFlux WAR应用程序中激活Spring Security的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆