2016-06-15 6 views
1

Я пытаюсь выполнить авторизацию с помощью Spring Security для моего проекта Spring MVC (недавно обновленного до 4.2.6.RELEASE). Поэтому я добавил эти dependecies:Spring MVC: Spring Security 4 не перехватывает

<dependency org="org.springframework.security" name="spring-security-config" rev="4.1.0.RELEASE" /> 
    <dependency org="org.springframework.security" name="spring-security-core" rev="4.1.0.RELEASE" /> 
    <dependency org="org.springframework.security" name="spring-security-crypto" rev="4.1.0.RELEASE" /> 
    <dependency org="org.springframework.security" name="spring-security-taglibs" rev="4.1.0.RELEASE" /> 
    <dependency org="org.springframework.security" name="spring-security-web" rev="4.1.0.RELEASE" /> 

Из того, что я понял, мне нужно только создать эти классы:

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 
import org.springframework.security.config.annotation.web.builders.HttpSecurity; 
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.authorizeRequests().antMatchers("/", "/home").permitAll().anyRequest().authenticated().and().formLogin() 
       .loginPage("/login").permitAll().and().logout().permitAll(); 
    } 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth.inMemoryAuthentication().withUser("user").password("password").roles("USER"); 
    } 
} 

и

import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; 

public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer { 
} 

Я хотел бы ожидать, что все URL, заблокированы прямо сейчас для пользователей, которые не вошли в систему, кроме «/», «/ home», «/ login» и «/ logout». В действительности ничего не блокируется, и мой webapp полностью доступен. Поэтому я должен ошибаться где-то ...

Действительно оцените, можете ли вы дать мне подсказку здесь о том, что может быть с моей проблемой. Спасибо!

ответ

0

Я проверил свой муравей Искателя и он работал нормально (все кажется нормально), поэтому я думаю, что вы не зарегистрировать свою конфигурацию логотей безопасности (SecurityConfig) к весеннему сервлету, это сделано с @Import.

@EnableWebMvc 
@Configuration 
@ComponentScan({ "yourpackage" }) 
@Import({ SecurityConfig .class }) // See here 
public class SpringServlet { 

    @Bean 
    public InternalResourceViewResolver viewResolver() { 
     InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
     viewResolver.setViewClass(JstlView.class); 
     viewResolver.setPrefix("/WEB-INF/.."); 
     viewResolver.setSuffix("..."); 
     return viewResolver; 
    } 

}