如何激活webflux
安全在一个战争包装应用。我正在使用 Spring 5 内置的AbstractAnnotationConfigDispatcherHandlerInitializer
,但它不起作用。
public class AppIntializer extends AbstractAnnotationConfigDispatcherHandlerInitializer {
@Override
protected Class<?>[] getConfigClasses() {
return new Class[]{
WebConfig.class,
SecurityConfig.class
};
}
}
但 Spring Security WebFilter 似乎未启用。 Spring Security 5 不包含特定于 Reactor 的WebApplicationInitializer
激活 Spring security 过滤器链。
堆栈: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
。然而,有一个bug in AbstractDispatcherHandlerInitializer
。您可以使用以下方法解决该问题:
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
};
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)