3

Spring Security の DelegatingFilterProxy が OpenEntityManagerInViewFilter の前に登録されているため、LazyInitializationException が発生します。

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") };
}

動作しますが、HttpSessionEventPublisher を有効にするには AbstractSecurityWebApplicationInitializer が必要です。

SpringSecurityFilterChain の前に OpenEntityManagerInViewFilter を取得するにはどうすればよいですか?

テストケースはhttps://github.com/bugix/spring-security-testcaseにあります。

4

0 に答える 0