From 7a3d15525c7eb42c82da57f8dfe381d7ca908c3b Mon Sep 17 00:00:00 2001 From: zengqiao Date: Tue, 6 Sep 2022 15:25:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81Ldap=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E8=AE=A4=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../streaming/km/account/KmAccountConfig.java | 7 ------- .../common/bizenum/LoginServiceNameEnum.java | 8 ++++++-- .../login/ldap/LdapLoginServiceImpl.java | 15 +++++++++++--- .../interceptor/PermissionInterceptor.java | 20 ++----------------- km-rest/src/main/resources/application.yml | 1 + 5 files changed, 21 insertions(+), 30 deletions(-) diff --git a/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/KmAccountConfig.java b/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/KmAccountConfig.java index 5e540e8d..a1acc73e 100644 --- a/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/KmAccountConfig.java +++ b/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/KmAccountConfig.java @@ -7,13 +7,6 @@ import org.springframework.stereotype.Service; @Data @Service public class KmAccountConfig { - /** - * LoginService的默认配置 - */ - @Value(value = "${account.login.service.name:loginService}") - private String loginServiceName; - - /**************************************************** Ldap 登录相关配置 ****************************************************/ @Value(value = "${account.ldap.url:}") diff --git a/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/common/bizenum/LoginServiceNameEnum.java b/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/common/bizenum/LoginServiceNameEnum.java index 663aae54..9d5b36b7 100644 --- a/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/common/bizenum/LoginServiceNameEnum.java +++ b/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/common/bizenum/LoginServiceNameEnum.java @@ -1,5 +1,6 @@ package com.xiaojukeji.know.streaming.km.account.common.bizenum; +import com.didiglobal.logi.security.extend.LoginExtendBeanTool; import lombok.Getter; @Getter @@ -10,9 +11,12 @@ public enum LoginServiceNameEnum { ; - public static final String DEFAULT_LOGIN_NAME = "loginService"; + /** + * @see LoginExtendBeanTool.DEFAULT_BEAN_NAME + */ + public static final String DEFAULT_LOGIN_NAME = "logiSecurityDefaultLoginExtendImpl"; - public static final String LDAP_LOGIN_NAME = "ldapLoginService"; + public static final String LDAP_LOGIN_NAME = "ksLdapLoginService"; private final String name; diff --git a/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/login/ldap/LdapLoginServiceImpl.java b/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/login/ldap/LdapLoginServiceImpl.java index 7f2bb4a9..3c0833e5 100644 --- a/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/login/ldap/LdapLoginServiceImpl.java +++ b/km-extends/km-account/src/main/java/com/xiaojukeji/know/streaming/km/account/login/ldap/LdapLoginServiceImpl.java @@ -7,7 +7,7 @@ import com.didiglobal.logi.security.common.entity.user.User; import com.didiglobal.logi.security.common.enums.ResultCode; import com.didiglobal.logi.security.common.vo.user.UserBriefVO; import com.didiglobal.logi.security.exception.LogiSecurityException; -import com.didiglobal.logi.security.service.LoginService; +import com.didiglobal.logi.security.extend.LoginExtend; import com.didiglobal.logi.security.service.UserService; import com.didiglobal.logi.security.util.AESUtils; import com.didiglobal.logi.security.util.CopyBeanUtil; @@ -39,8 +39,8 @@ import static com.didiglobal.logi.security.util.HttpRequestUtil.COOKIE_OR_SESSIO * @author Hu.Yue * @date 2021/8/4 */ -//@Service(LoginServiceNameEnum.LDAP_LOGIN_NAME) -public class LdapLoginServiceImpl implements LoginService { +@Service(LoginServiceNameEnum.LDAP_LOGIN_NAME) +public class LdapLoginServiceImpl implements LoginExtend { private static final Logger LOGGER = LoggerFactory.getLogger(LdapLoginServiceImpl.class); @Autowired @@ -89,8 +89,17 @@ public class LdapLoginServiceImpl implements LoginService { @Override public Result logout(HttpServletRequest request, HttpServletResponse response){ + // 清理session request.getSession().invalidate(); response.setStatus(REDIRECT_CODE); + + // 清理cookies + for (Cookie cookie: request.getCookies()) { + cookie.setMaxAge(0); + cookie.setPath("/"); + response.addCookie(cookie); + } + return Result.buildSucc(Boolean.TRUE); } diff --git a/km-rest/src/main/java/com/xiaojukeji/know/streaming/km/rest/interceptor/PermissionInterceptor.java b/km-rest/src/main/java/com/xiaojukeji/know/streaming/km/rest/interceptor/PermissionInterceptor.java index 85f7c42d..e522d062 100644 --- a/km-rest/src/main/java/com/xiaojukeji/know/streaming/km/rest/interceptor/PermissionInterceptor.java +++ b/km-rest/src/main/java/com/xiaojukeji/know/streaming/km/rest/interceptor/PermissionInterceptor.java @@ -4,10 +4,7 @@ import com.didiglobal.logi.log.ILog; import com.didiglobal.logi.log.LogFactory; import com.didiglobal.logi.security.common.constant.Constants; import com.didiglobal.logi.security.service.LoginService; -import com.xiaojukeji.know.streaming.km.account.KmAccountConfig; -import com.xiaojukeji.know.streaming.km.account.common.bizenum.LoginServiceNameEnum; import com.xiaojukeji.know.streaming.km.account.login.trick.TrickJumpLoginService; -import com.xiaojukeji.know.streaming.km.common.component.HandleFactory; import com.xiaojukeji.know.streaming.km.common.constant.ApiPrefix; import com.xiaojukeji.know.streaming.km.common.constant.Constant; import org.springframework.beans.factory.annotation.Autowired; @@ -36,10 +33,7 @@ public class PermissionInterceptor implements HandlerInterceptor { private static final String OPEN_URL_PREFIX = ApiPrefix.API_V3_OPEN_PREFIX; @Autowired - private HandleFactory handleFactory; - - @Autowired - private KmAccountConfig kmAccountConfig; + private LoginService loginService; @Autowired private TrickJumpLoginService trickJumpLoginService; @@ -77,21 +71,11 @@ public class PermissionInterceptor implements HandlerInterceptor { whiteMappingValues.add(LOGIN_URL); whiteMappingValues.add(OPEN_URL_PREFIX); - return this.getLoginService().interceptorCheck(request, response, classRequestMappingValue, whiteMappingValues); + return loginService.interceptorCheck(request, response, classRequestMappingValue, whiteMappingValues); } /**************************************************** private method ****************************************************/ - private LoginService getLoginService() { - LoginService loginService = handleFactory.getByClassNamePer(kmAccountConfig.getLoginServiceName(), LoginService.class); - if (loginService == null) { - LOGGER.error("method=getLoginService||specifiedLoginServiceName={}||msg=specified login service not exist and use default", kmAccountConfig.getLoginServiceName()); - return handleFactory.getByClassNamePer(LoginServiceNameEnum.DEFAULT_LOGIN_NAME, LoginService.class); - } - - return loginService; - } - /** * 通过反射获取带有@RequestMapping的Controller * @param handler 请求处理器 diff --git a/km-rest/src/main/resources/application.yml b/km-rest/src/main/resources/application.yml index 4b0831c7..7af15333 100644 --- a/km-rest/src/main/resources/application.yml +++ b/km-rest/src/main/resources/application.yml @@ -41,6 +41,7 @@ spring: driver-class-name: org.mariadb.jdbc.Driver app-name: know-streaming resource-extend-bean-name: myResourceExtendImpl + login-extend-bean-name: logiSecurityDefaultLoginExtendImpl logging: config: classpath:logback-spring.xml