我重构了这段代码,它在Sping Boot 2.7中运行良好
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().ignoringAntMatchers("/api/**").and()
.authorizeRequests()
.antMatchers(
"/",
"/_admin/**",
"/swagger-ui.html*",
"/swagger-resources/**",
"/webjars/springfox-swagger-ui/**",
"/swagger-resources",
"/api-docs/**",
"/api/**",
"/login",
"/login/**",
"/oauth2/**",
"/static/**",
"/404",
"/405",
"/favicon.ico",
"/**/*.png",
"/**/*.gif",
"/**/*.svg",
"/**/*.jpg",
"/**/*.html",
"/**/*.css",
"/**/*.js")
.permitAll()
.antMatchers("/ui/**")
.authenticated()
.and()
.oauth2Login();
http.headers().httpStrictTransportSecurity().maxAgeInSeconds(0);
}
这是:
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.csrf().ignoringRequestMatchers("/api/**").and()
.authorizeHttpRequests(authorize -> authorize.shouldFilterAllDispatcherTypes(true).dispatcherTypeMatchers(DispatcherType.FORWARD).permitAll().requestMatchers("/",
"/api/v1/links/**",
"/_admin/**",
"/swagger-ui.html*",
"/swagger-resources/**",
"/webjars/springfox-swagger-ui/**",
"/swagger-resources",
"/api-docs/**",
"/api/**",
"/login",
"/login/**",
"/oauth2/**",
"/static/**",
"/404",
"/405",
"/favicon.ico",
"/demoLink/**",
"/DemoLink/**",
"/templateLink/**",
"/**/*.png",
"/**/*.gif",
"/**/*.svg",
"/**/*.jpg",
"/**/*.html",
"/**/*.css",
"/**/*.js"
).permitAll().anyRequest().authenticated())
.oauth2Login();
http.headers().httpStrictTransportSecurity().maxAgeInSeconds(0);
return http.build();
}
但我得到了**PatternParse没有更多的模式. *
我正在迁移到Sping Boot 3,但是/**/*.x
不再被允许的问题导致了一些重定向需要进行身份验证。我搜索了很多,但找不到新的Spring Security中/**/*.x
模式的替代品。
**编辑:**我不拥有.js
资源。我在服务进行某种重定向时接收到它们,因此我无法预测特定的模式。
2条答案
按热度按时间cnwbcb6i1#
我问了ChatGPT,得到了这个:
在Spring Security 5.5+(包括Sping Boot 3.x版本)中,在模式(如//*.js)中使用带文件扩展名的双星号()由于其实现和解释的问题而被弃用。
使用显式路径:如果您将JavaScript文件放在/js/下,CSS文件放在/css/下,则可以使用/js/**或/css/等模式,而不是//*.js
也许你得稍微调整一下。
mwngjboj2#
您可以实现自定义的身份验证过滤器,从而在请求进入实际的过滤器之前拦截它。在那里,您可以检查您的条件并自己验证请求。
你还必须在其他类的过滤器链中添加这个: