0

我有一个示例 Web 应用程序,我将其用作示例,以将现有的servlet 2.4应用程序从基于 XML 的安全配置迁移到新的基于 Java 配置的样式,如此处所述。Spring Security Java 配置预览

我的安全配置如下:

@Configuration
@EnableWebSecurity
@Slf4j
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

public WebSecurityConfig() {
    log.info("init");
}

@Override
protected void registerAuthentication(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
}

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/resources/**");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
  http
    .authorizeUrls()
      .antMatchers("/","/home").permitAll() 
      .antMatchers("/secure/**").hasRole("USER")
      .anyRequest().authenticated()
      .and()
  .formLogin() 
      .loginUrl("/login") 
      .permitAll();
}
}

问题是文档/示例基于 servlet 3.0 规范,不使用 web.xml

该文档使用 AbstractAnnotationConfigDispatcherServletInitializer 但我不能在 servlet 2.4 容器中使用它。

我使用web.xml引导我的 MVC 应用程序,如下所示:

<servlet>
    <servlet-name>my-spike</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextClass</param-name>
        <param-value>
           org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </init-param>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>com.example.config.WebMvcConfig</param-value>
    </init-param>
</servlet>

所以问题是如何将我的 WebSecurityConfig 添加到 web.xml 或 Java 代码中的根应用程序上下文中?

4

1 回答 1

0

您应该可以通过ContextLoaderListener这种方式对其进行配置:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value> package.WebSecurityConfig</param-value>
</context-param>
<context-param>
    <param-name>contextClass</param-name>
    <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
于 2013-09-13T16:44:04.890 回答