2016-05-19 6 views
0

Я пытаюсь добавить веб-безопасность весной, но я не хочу, чтобы фильтр применялся к определенным вещам. Как это делается в java?Spring Security отключить HTTP Basic для одной конкретной страницы

В общем, что я хочу сделать это:

/ и /login не должен показывать HTTP Basic запрос аутентификации для входа в систему, а все остальное должно пройти через фильтр и всплывающее окно ввода логина.

с помощью различного примера я нашел через весну я был в состоянии придумать с этим, как для начала, но это явно не работает:

@Configuration 
@EnableWebMvcSecurity 
public class AuthSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    public void configure(WebSecurity web) throws Exception { 
     web.ignoring().antMatchers("/css/**", "/js/**", "/img/**", "/lib/**"); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.csrf().disable().antMatcher("/").authorizeRequests().anyRequest().permitAll(); 
     http.csrf().disable().antMatcher("/**").authorizeRequests().anyRequest().hasRole("ADMIN").and().httpBasic(); 
    } 

    @Autowired 
    protected void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth.inMemoryAuthentication() 
       .withUser("admin").password("admin123").roles("ADMIN") 
       .and() 
       .withUser("user").password("user123").roles("USER"); 
    } 

} 
+1

Вы пытаетесь включить как регистрацию форм, так и аутентификацию http basic? –

ответ

0

Перепишите ваш метод configure(HttpSecurity http) как следующее:

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http 
      .httpBasic() 
      .and() 
      .authorizeRequests() 
       .antMatchers("/", "/login").permitAll() 
       .anyRequest().hasRole("ADMIN") 
      .and() 
      .csrf() 
       .disable(); 
} 

«/» и «/ входа в систему» ​​не должны показывать подсказку аутентификации httpbasic для входа в систему, в то время как все остальное должно пройти через фильтр и всплывал журнал в подсказном окне.

Если вы серьезно планируете использовать HTTP Basic, я думаю, вы бы не нужен отдельный /login обработчик, поскольку клиент на основе браузера можно использовать попы на основе браузера по умолчанию и другие клиенты могут отправить HTTP Основных запросы через Authorization заголовок.

+1

Спасибо вам большое! – Awa

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