我使用spring-boot-starter 0.5.0.M6和spring security来构建我的应用程序,其中包含:
我的第一次尝试是:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/resources/**").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.and()
.formLogin()
.defaultSuccessUrl("/admin/home")
.loginPage("/login")
.permitAll()
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout", "GET"))
.permitAll();
http
.authorizeRequests()
.antMatchers("/api/**").hasRole("API")
.and()
.httpBasic();
}
采用这种方法:
然后我尝试使用https://github.com/spring-projects/spring-security-javaconfig/blob/master/samples-web.md#sample-multi-http-web-configuration
中的解决方案,但我只能保护/api/**
或/admin/**
,但不能同时保护两者,取决于我使用@Order
注释的那个
请帮我一把。
非常感谢
答案 0 :(得分:4)
对于您的api部分,请使用以下内容。请注意第一个ant匹配器,它限制此安全配置筛选的范围。这是我最初从你的参考中不了解的部分。
@Configuration
@Order(1)
public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
// the ant matcher is what limits the scope of this configuration.
http.antMatcher("/api/**").authorizeRequests()
.antMatchers("/api/**").authenticated()
.and().httpBasic().realmName("Sourcing API");
}
}