我有一个简单的 hello world 应用程序,带有 h2 数据库、spring 数据和 spring 安全性。我的安全配置如下所示:
@Configuration
class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(
requests -> requests
.mvcMatchers("/h2-console", "/h2-console/**").permitAll()
.anyRequest().authenticated()
);
http.csrf().disable();
http.headers().frameOptions().disable();
http.formLogin(login -> login.loginPage("/login").permitAll());
}
}
不幸的是,当我尝试访问 h2 控制台时,我被重定向到登录页面,但如果我只是将 mvcMatchers() 更改为 antMatchers() ,如下所示:
@Configuration
class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(
requests -> requests
.antMatchers("/h2-console", "/h2-console/**").permitAll()
.anyRequest().authenticated()
);
http.csrf().disable();
http.headers().frameOptions().disable();
http.formLogin(login -> login.loginPage("/login").permitAll());
}
}
然后一切正常,我可以从网络浏览器访问 H2 控制台。为什么 mvcMatchers 不能按我的预期工作?网址格式错了吗?