如何在 webflux war 应用程序中激活 Spring 安全性
How to activate Spring Security in a webflux war application
如何在 war 打包 应用程序中激活 webflux
安全性。我正在使用 Spring 5 内置 AbstractAnnotationConfigDispatcherHandlerInitializer
,但它不起作用。
public class AppIntializer extends AbstractAnnotationConfigDispatcherHandlerInitializer {
@Override
protected Class<?>[] getConfigClasses() {
return new Class[]{
WebConfig.class,
SecurityConfig.class
};
}
}
但似乎 Spring 安全 WebFilter 未启用。 Spring Security 5 不包含用于激活 Spring 安全过滤器链的 Reactor 特定 WebApplicationInitializer
。
堆栈:Spring安全 5.0.0.M4
您应该可以只使用 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
};
}
}
如何在 war 打包 应用程序中激活 webflux
安全性。我正在使用 Spring 5 内置 AbstractAnnotationConfigDispatcherHandlerInitializer
,但它不起作用。
public class AppIntializer extends AbstractAnnotationConfigDispatcherHandlerInitializer {
@Override
protected Class<?>[] getConfigClasses() {
return new Class[]{
WebConfig.class,
SecurityConfig.class
};
}
}
但似乎 Spring 安全 WebFilter 未启用。 Spring Security 5 不包含用于激活 Spring 安全过滤器链的 Reactor 特定 WebApplicationInitializer
。
堆栈:Spring安全 5.0.0.M4
您应该可以只使用 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
};
}
}