From d763e3273602a583e6d66a34a3709ff2f686ee42 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Wed, 17 May 2023 09:55:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dmvc=E4=B8=8B=E4=B8=8D?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3EnableAopAuthorize=E6=97=B6=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AuthorizingHandlerAutoConfiguration.java | 59 -------------- .../WebMvcAuthorizingConfiguration.java | 78 +++++++++++++++++++ .../main/resources/META-INF/spring.factories | 3 +- 3 files changed, 80 insertions(+), 60 deletions(-) create mode 100644 hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/configuration/WebMvcAuthorizingConfiguration.java diff --git a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/configuration/AuthorizingHandlerAutoConfiguration.java b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/configuration/AuthorizingHandlerAutoConfiguration.java index 3ba9465d1..e542d8c63 100644 --- a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/configuration/AuthorizingHandlerAutoConfiguration.java +++ b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/configuration/AuthorizingHandlerAutoConfiguration.java @@ -58,65 +58,6 @@ public class AuthorizingHandlerAutoConfiguration { } - @Configuration - @ConditionalOnClass(name = "org.springframework.web.servlet.config.annotation.WebMvcConfigurer") - @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) - static class WebMvcAuthorizingConfiguration { - @Bean - @Order(Ordered.HIGHEST_PRECEDENCE) - public WebMvcConfigurer webUserTokenInterceptorConfigurer(UserTokenManager userTokenManager, - AopMethodAuthorizeDefinitionParser parser, - List userTokenParser) { - - return new WebMvcConfigurer() { - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(new WebUserTokenInterceptor(userTokenManager, userTokenParser, parser)); - } - }; - } - - @Bean - public UserOnSignIn userOnSignIn(UserTokenManager userTokenManager) { - return new UserOnSignIn(userTokenManager); - } - - @Bean - public UserOnSignOut userOnSignOut(UserTokenManager userTokenManager) { - return new UserOnSignOut(userTokenManager); - } - - @SuppressWarnings("all") - @ConfigurationProperties(prefix = "hsweb.authorize.token.default") - public ServletUserTokenGenPar servletUserTokenGenPar(){ - return new ServletUserTokenGenPar(); - } - - @Bean - @ConditionalOnMissingBean(UserTokenParser.class) - public UserTokenParser userTokenParser() { - return new SessionIdUserTokenParser(); - } - - @Bean - public SessionIdUserTokenGenerator sessionIdUserTokenGenerator() { - return new SessionIdUserTokenGenerator(); - } - - @Bean - @ConditionalOnProperty(prefix = "hsweb.authorize.two-factor", name = "enable", havingValue = "true") - @Order(100) - public WebMvcConfigurer twoFactorHandlerConfigurer(TwoFactorValidatorManager manager) { - return new WebMvcConfigurer() { - @Override - public void addInterceptors(@Nonnull InterceptorRegistry registry) { - registry.addInterceptor(new TwoFactorHandlerInterceptorAdapter(manager)); - } - }; - } - - } - @Bean public ReactiveAuthenticationManagerProvider embedAuthenticationManager(EmbedAuthenticationProperties properties) { return new EmbedReactiveAuthenticationManager(properties); diff --git a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/configuration/WebMvcAuthorizingConfiguration.java b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/configuration/WebMvcAuthorizingConfiguration.java new file mode 100644 index 000000000..e7b97facc --- /dev/null +++ b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/configuration/WebMvcAuthorizingConfiguration.java @@ -0,0 +1,78 @@ +package org.hswebframework.web.authorization.basic.configuration; + +import org.hswebframework.web.authorization.basic.aop.AopMethodAuthorizeDefinitionParser; +import org.hswebframework.web.authorization.basic.twofactor.TwoFactorHandlerInterceptorAdapter; +import org.hswebframework.web.authorization.basic.web.*; +import org.hswebframework.web.authorization.token.UserTokenManager; +import org.hswebframework.web.authorization.twofactor.TwoFactorValidatorManager; +import org.springframework.boot.autoconfigure.condition.*; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import javax.annotation.Nonnull; +import java.util.List; + +@Configuration +@ConditionalOnClass(name = "org.springframework.web.servlet.config.annotation.WebMvcConfigurer") +@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) +public class WebMvcAuthorizingConfiguration { + @Bean + @Order(Ordered.HIGHEST_PRECEDENCE) + @ConditionalOnBean(AopMethodAuthorizeDefinitionParser.class) + public WebMvcConfigurer webUserTokenInterceptorConfigurer(UserTokenManager userTokenManager, + AopMethodAuthorizeDefinitionParser parser, + List userTokenParser) { + + return new WebMvcConfigurer() { + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(new WebUserTokenInterceptor(userTokenManager, userTokenParser, parser)); + } + }; + } + + @Bean + public UserOnSignIn userOnSignIn(UserTokenManager userTokenManager) { + return new UserOnSignIn(userTokenManager); + } + + @Bean + public UserOnSignOut userOnSignOut(UserTokenManager userTokenManager) { + return new UserOnSignOut(userTokenManager); + } + + @SuppressWarnings("all") + @ConfigurationProperties(prefix = "hsweb.authorize.token.default") + public ServletUserTokenGenPar servletUserTokenGenPar() { + return new ServletUserTokenGenPar(); + } + + @Bean + @ConditionalOnMissingBean(UserTokenParser.class) + public UserTokenParser userTokenParser() { + return new SessionIdUserTokenParser(); + } + + @Bean + public SessionIdUserTokenGenerator sessionIdUserTokenGenerator() { + return new SessionIdUserTokenGenerator(); + } + + @Bean + @ConditionalOnProperty(prefix = "hsweb.authorize.two-factor", name = "enable", havingValue = "true") + @Order(100) + public WebMvcConfigurer twoFactorHandlerConfigurer(TwoFactorValidatorManager manager) { + return new WebMvcConfigurer() { + @Override + public void addInterceptors(@Nonnull InterceptorRegistry registry) { + registry.addInterceptor(new TwoFactorHandlerInterceptorAdapter(manager)); + } + }; + } + +} \ No newline at end of file diff --git a/hsweb-authorization/hsweb-authorization-basic/src/main/resources/META-INF/spring.factories b/hsweb-authorization/hsweb-authorization-basic/src/main/resources/META-INF/spring.factories index 47a5ff6e8..e8d9b2d64 100644 --- a/hsweb-authorization/hsweb-authorization-basic/src/main/resources/META-INF/spring.factories +++ b/hsweb-authorization/hsweb-authorization-basic/src/main/resources/META-INF/spring.factories @@ -1,3 +1,4 @@ # Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -org.hswebframework.web.authorization.basic.configuration.AuthorizingHandlerAutoConfiguration \ No newline at end of file +org.hswebframework.web.authorization.basic.configuration.AuthorizingHandlerAutoConfiguration,\ +org.hswebframework.web.authorization.basic.configuration.WebMvcAuthorizingConfiguration \ No newline at end of file