在某些情况下,例如故障排除,安全检查可能会给我们造成障碍,但我无法快速关闭它们。我必须删除@EnableWebSecurity和@EnableMethodSecurity,重新编译项目,并在故障排除之前将其放在服务器上。
在添加@EnableWebSecurity和@EnableMethodSecurity之后,我在配置文件中自定义了参数来禁用SpringSecurity。然而,SpringSecurity不再验证我的token,但@PreAuthorize仍然可以工作。下面是代码。
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http, JwtAuthenticationConverter converter) throws Exception {
if (officeSecurityProperties.isEnable()) {
http.authorizeHttpRequests(
authorize -> authorize
.requestMatchers("/doc.html", "/webjars/**", "/v3/api-docs/**").permitAll()
.anyRequest().authenticated()
)
.oauth2ResourceServer(
oauth2 -> oauth2.jwt(
jwt -> jwt.jwtAuthenticationConverter(converter)
)
);
} else {
http.securityContext(AbstractHttpConfigurer::disable);
}
return http.build();
}
字符串
1条答案
按热度按时间xesrikrc1#
有两件事你可以考虑。
不开启
最简单的方法是从一开始就不启用。您可以禁用Sping Boot 配置,然后发布自己的配置类,并使用
@ConditionalOnProperty
annotation,如下所示:个字符
编程开启
关闭你已经打开的东西会更棘手。你似乎已经有了一些用于Web安全的东西。对于方法安全性,请将注解更改为:
型
然后自己发布方法拦截器,如下所示:
型
这将发布
@PreAuthorize
支持。您将为您想要启用行为的每个注解发布一个方法拦截器。