2014-11-15 5 views
1

Я следую за весной security 3.2 doc, чтобы написать пример приложения. http.authorizeRequests(). anyRequest(). authenticated() означает, что любой запрос отрицает, кто не является логином? Но я получаю доступ к любому URL-адресу, к которому он доступен. Что-то config i отсутствует?Весенняя безопасность 3.2 Конфигурация java

@Configuration 
public class SpringWebMVCApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class[] { SecurityConfig.class }; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class[] { WebConfig.class }; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/" }; 
    } 

}

SpringMVC конфигурация

@Configuration 
@EnableWebMvc 
@ComponentScan("org.jxs.mm.controller") 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/assets/**").addResourceLocations("/assets/"); 
     registry.addResourceHandler("/favicon.ico").addResourceLocations("/favicon.ico"); 
    } 

} 

пружина безопасность конфигурация

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
     .authorizeRequests() 
      .anyRequest().authenticated(); 
    } 
} 

ответ

0

Возможно, вы еще не зарегистрировали свой springSecurityFilterChain с войной. Смотрите раздел 3.1.1 в Spring Security documentation

Резюмируя:

SecurityConfig класс определяет конфигурацию Spring Security. Он настраивает фильтр springSecurityFilterChain.

Однако эта цепочка фильтров должна быть применена к/зарегистрирована/связана со всеми URL-адресами вашего приложения (так что URL-адреса будут перехватываться функцией springSecurityFilterChain). Это может быть сделано путем расширения AbstractSecurityWebApplicationInitializer так:

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

public class SecurityWebApplicationInitializer 
     extends AbstractSecurityWebApplicationInitializer { 

} 

После этого Spring Security должен перехватывать любые URL и применять соответствующие правила безопасности в соответствии с настройками.

+0

Да, я скучаю по нему. Благодаря! – user1434702

0

Вы можете предоставить доступ к конкретной успокоительной Url, которые не требуют аутентификаций с ключевым словом "permitAll" и «hasAnyAuthority» для страниц, которые делают.

  http 
      .formLogin() 
        .loginPage("/signin") 
        .loginProcessingUrl("/signin/authenticate") 
        .failureUrl("/loginfail") 
        // Grant all access to login url 
        .permitAll() 
        .and() 
       .logout() 
       .logoutUrl("/signout") 
       .logoutSuccessUrl("/signin") 
       .and() 
       .authorizeRequests() 
        .antMatchers("/foo/**").permitAll() //No authentication required 
        .antMatchers("/").hasAnyAuthority("ROLE_USER","ROLE_ADMIN") //Authentication required (access granted to users with role "ROLE_USER" or "ROLE_ADMIN") 

     } 
+0

Все еще может получить доступ к корневому URL с кодом. – user1434702

Смежные вопросы