我正在尝试在扩展WebSecurityConfigurerAdapter的类中使用Spring的Security的Java配置。我使用的是版本3.2.0.RELEASE。
在HttpSecurity.java类中有一个例子如下。
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/**").hasRole("USER").and()
.httpBasic();
}
当我尝试在我的项目中使用这个确切的示例时,.and()方法不会返回带有.httpBasic()方法的对象。传递给configure()方法的HttpSecurity http对象上有.httpBasic()。
我试图理解为什么这个规范的例子不起作用。这看起来非常简单,我已经在网上看到了以相同方式使用它的代码。
我的版本有错吗?我看到有些人使用发布的Candiate,但我认为3.2.0.RELEASE版本是最新版本(如此处列出的http://projects.spring.io/spring-security/)。
答案 0 :(得分:2)
使用Maven和Gradle,你的代码在Eclipse中编译就好了。我猜你使用的是具有bug for handling the generic return types的IntelliJ。在此期间,您可以将authorizeRequests()移动到底部,IntelliJ将编译其余部分。
顺便说一下,我鼓励你使用以下内容:
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic()
.and()
.authorizeRequests()
.anyRequest().hasRole("USER");
}
三个变化:
答案 1 :(得分:0)
我不知道为什么这个例子是错的,但这很有效。
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic();
http
.authorizeRequests()
.antMatchers("/**").hasRole("USER");
}