需要Spring Security 6.1帮助

mutmk8jj  于 2023-08-05  发布在  Spring
关注(0)|答案(1)|浏览(174)

我有这个配置在我的Spring Boot 3,但昨天我打开配置看到一些错误,因为authorizeHttpRequests是不赞成的,我看过的文档,但我仍然不能弄清楚

@Bean     
 public SecurityFilterChain adminFilterChain(HttpSecurity http) throws Exception {         http         .authenticationProvider(authenticationProvider2());         http.securityMatcher("/admin/\*\*").authorizeHttpRequests().anyRequest().authenticated()                 .and()                 .formLogin()                 .loginPage("/admin/login").usernameParameter("username")                 .loginProcessingUrl("/admin/login")                 .defaultSuccessUrl("/admin/AdminDashBoard")                 .permitAll()                 .and().logout()                 .logoutUrl("/admin/logout")                 .invalidateHttpSession(true)                 .logoutSuccessUrl("/");            return http.build();     }

字符串
我试着用谷歌

mec1mxoz

mec1mxoz1#

Sping Boot 版本使用的是6.0版本的安全性,但Spring boot3.1已经使用了6.1版本而如果我们谈论从6.0到6.1的升级,比你想象的要容易
如果转到已弃用的方法,您将看到显示如何使用该方法的文档。以**authorizeHttpRequests()方法为例这里我们使用以下方法配置authorizeHttpRequests()**相关的所有内容:

authorizeHttpRequests()
    .requestMatchers("/api/v1/auth/**").permitAll()
    .requestMatchers("/user/**").hasRole("USER")
    .requestMatchers("/admin/**").hasRole("ADMIN")
    .anyRequest().authenticated()

字符串
配置完authorizeHttpRequests()后,返回给我们的是SecurityConfigurer,但要进一步配置,需要调用HttpSecurity返回给我们的and()方法。
现在文档告诉我们6.1中
authorizeHttpRequests()已弃用,改用authorizeHttpRequests(Customizer)
。本例中使用的是Customizer,即返回弃用的authorizeHttpRequests()方法的AuthorizeHttpRequestsConfigurer。也就是说,必须用新代码替换旧代码:

.authorizeHttpRequests((authorize) -> authorize
        .requestMatchers("/api/v1/auth/**").permitAll()
        .requestMatchers("/user/**").hasRole("USER")
        .requestMatchers("/admin/**").hasRole("ADMIN")
        .anyRequest().authenticated()
)


其他不推荐使用的方法也应该这样做,例如:

  • cors().disable()> csrf((csrf)-> csrf.disable())
  • exceptionHandling().accessDeniedPage(“/errors/access-denied”)>>> exceptionHandling((exceptionHandling)-> exceptionHandling.accessDeniedPage(“/errors/access-denied”))
  • logout().deleteCookies(“remove”)> logout((logout)-> logout.deleteCookies(“remove”))

我希望我已经清楚地解释了这些小变化。Have a nice projects =)

相关问题