diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/ReactiveAuthenticationHolder.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/ReactiveAuthenticationHolder.java index fb0c1750d..bf95951d0 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/ReactiveAuthenticationHolder.java +++ b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/ReactiveAuthenticationHolder.java @@ -104,9 +104,7 @@ public final class ReactiveAuthenticationHolder { } Authentication get() { - return auth == null - ? AuthenticationHolder.get().orElse(null) - : auth; + return auth; } } diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/context/AuthenticationThreadLocalAccessor.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/context/AuthenticationThreadLocalAccessor.java index b8f4981a8..49c097523 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/context/AuthenticationThreadLocalAccessor.java +++ b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/context/AuthenticationThreadLocalAccessor.java @@ -3,13 +3,21 @@ package org.hswebframework.web.authorization.context; import io.micrometer.context.ThreadLocalAccessor; import org.hswebframework.web.authorization.Authentication; import org.hswebframework.web.authorization.AuthenticationHolder; +import org.hswebframework.web.authorization.ReactiveAuthenticationHolder; import javax.annotation.Nonnull; -public class AuthenticationThreadLocalAccessor implements ThreadLocalAccessor { +public class AuthenticationThreadLocalAccessor + implements ThreadLocalAccessor { static final String KEY = "cp.hs.auth"; + static { + ReactiveAuthenticationHolder.addSupplier( + new ThreadLocalReactiveAuthenticationSupplier() + ); + } + @Override @Nonnull public Object key() { diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/context/ThreadLocalReactiveAuthenticationSupplier.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/context/ThreadLocalReactiveAuthenticationSupplier.java new file mode 100644 index 000000000..041f6db08 --- /dev/null +++ b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/context/ThreadLocalReactiveAuthenticationSupplier.java @@ -0,0 +1,18 @@ +package org.hswebframework.web.authorization.context; + +import org.hswebframework.web.authorization.Authentication; +import org.hswebframework.web.authorization.AuthenticationHolder; +import org.hswebframework.web.authorization.ReactiveAuthenticationSupplier; +import reactor.core.publisher.Mono; + +class ThreadLocalReactiveAuthenticationSupplier implements ReactiveAuthenticationSupplier { + @Override + public Mono get(String userId) { + return Mono.empty(); + } + + @Override + public Mono get() { + return Mono.justOrEmpty(AuthenticationHolder.get()); + } +} diff --git a/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/context/AuthenticationThreadLocalAccessorTest.java b/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/context/AuthenticationThreadLocalAccessorTest.java index cf61123d0..a1795391b 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/context/AuthenticationThreadLocalAccessorTest.java +++ b/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/context/AuthenticationThreadLocalAccessorTest.java @@ -26,9 +26,10 @@ class AuthenticationThreadLocalAccessorTest { () -> Authentication .currentReactive() .subscribeOn(Schedulers.boundedElastic()) + .contextCapture() .block()); - assertEquals(auth,auth2); + assertEquals(auth, auth2); } @Test