Reactive

本站(springdoc.cn)中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springboot.io - Spring Boot中文社区 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。

如果你已经为你的Reactive应用程序执行了 初始迁移步骤,你现在就可以执行Reactive应用程序的具体步骤了。

使用 AuthorizationManager 实现方法安全(Method Security)

在6.0中,@EnableReactiveMethodSecurityuseAuthorizationManager 默认为 true。因此,为了完成迁移,https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/config/annotation/method/configuration/EnableReactiveMethodSecurity.html[@EnableReactiveMethodSecurity] 删除 useAuthorizationManager 属性。

Java
@EnableReactiveMethodSecurity(useAuthorizationManager = true)
Kotlin
@EnableReactiveMethodSecurity(useAuthorizationManager = true)

改为:

Java
@EnableReactiveMethodSecurity
Kotlin
@EnableReactiveMethodSecurity

传播 AuthenticationServiceException

AuthenticationWebFilter 传播 AuthenticationServiceExceptionServerAuthenticationEntryPoint。因为 AuthenticationServiceException 代表的是服务器端的错误,而不是客户端的错误,在6.0中,这改变为将它们传播到容器中。

所以,如果你通过设置 rethrowAuthenticationServiceExceptiontrue 而选择了这种行为,你现在可以像这样删除它。

Java
AuthenticationFailureHandler bearerFailureHandler = new ServerAuthenticationEntryPointFailureHandler(bearerEntryPoint);
bearerFailureHandler.setRethrowAuthenticationServiceException(true);
AuthenticationFailureHandler basicFailureHandler = new ServerAuthenticationEntryPointFailureHandler(basicEntryPoint);
basicFailureHandler.setRethrowAuthenticationServiceException(true);
Kotlin
val bearerFailureHandler: AuthenticationFailureHandler = ServerAuthenticationEntryPointFailureHandler(bearerEntryPoint)
bearerFailureHandler.setRethrowAuthenticationServiceException(true)
val basicFailureHandler: AuthenticationFailureHandler = ServerAuthenticationEntryPointFailureHandler(basicEntryPoint)
basicFailureHandler.setRethrowAuthenticationServiceException(true)

改为:

Java
AuthenticationFailureHandler bearerFailureHandler = new ServerAuthenticationEntryPointFailureHandler(bearerEntryPoint);
AuthenticationFailureHandler basicFailureHandler = new ServerAuthenticationEntryPointFailureHandler(basicEntryPoint);
Kotlin
val bearerFailureHandler: AuthenticationFailureHandler = ServerAuthenticationEntryPointFailureHandler(bearerEntryPoint)
val basicFailureHandler: AuthenticationFailureHandler = ServerAuthenticationEntryPointFailureHandler(basicEntryPoint)

如果你配置 ServerAuthenticationFailureHandler 只是为了更新到6.0,你可以完全删除它。