2013-09-13 4 views
0

У меня есть пример веб-приложения, которое я использую в качестве образца для преобразования существующего сервлета . 2.4. приложение для перехода от XML-конфигурации безопасности к новому стилю на основе Java. описанных здесь. Spring Security Java Config PreviewWebSecurityConfigurerAdapter добавить в корневой контекст в контейнере не Servlet 3.0

Моя конфигурация безопасности выглядит следующим образом:

@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(); 
} 
} 

Проблема в том, что документация/примеры основаны на сервлет 3.0 спецификации, которые не используют web.xml

документация использует AbstractAnnotationConfigDispatcherServletInitializer но I не может использовать это в сервлете 2.4 контейнера.

Я самонастройка моего приложения MVC с помощью web.xml так:

<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 коде?

ответ

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> 
Смежные вопросы