3

我得到一个 LazyInitializationException 因为来自 Spring Security 的 DelegatingFilterProxy 是在 OpenEntityManagerInViewFilter 前面注册的。

我在我的 AbstractSecurityWebApplicationInitializer 中像这样注册 OpenEntityManagerInViewFilter:

@Override
protected void afterSpringSecurityFilterChain(ServletContext servletContext) {
    insertFilters(servletContext, new OpenEntityManagerInViewFilter());
}

如果我不使用 AbstractSecurityWebApplicationInitializer 并像这样在 AbstractAnnotationConfigDispatcherServletInitializer 中注册过滤器

@Override
protected Filter[] getServletFilters() {
    return new Filter[] { new OpenEntityManagerInViewFilter(), new DelegatingFilterProxy("springSecurityFilterChain") };
}

它可以工作,但我需要 AbstractSecurityWebApplicationInitializer 来启用 HttpSessionEventPublisher。

如何在 SpringSecurityFilterChain 前面获取 OpenEntityManagerInViewFilter?

可以在https://github.com/bugix/spring-security-testcase找到一个测试用例

4

0 回答 0