From e805deb837c140f1c4a57bb443b076ed1b60d2d0 Mon Sep 17 00:00:00 2001 From: wangyu <727842003@qq.com> Date: Sun, 17 Jan 2021 10:44:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=A5=E5=BF=97=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/logging/domain/LogQo.java | 10 +++++++- .../service/SimpleAuthenticationLogger.java | 25 +++++++++---------- .../framework/service/UserService.java | 7 +++++- .../handler/JsonLogoutSuccessHandler.java | 4 +++ .../framework/service/UserFindService.java | 20 +++++++++++++++ 5 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 flyfish-web/src/main/java/com/flyfish/framework/service/UserFindService.java diff --git a/flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/LogQo.java b/flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/LogQo.java index ea86ce4..49b578b 100644 --- a/flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/LogQo.java +++ b/flyfish-logging/src/main/java/com/flyfish/framework/logging/domain/LogQo.java @@ -5,6 +5,7 @@ import com.flyfish.framework.domain.base.BaseQo; import com.flyfish.framework.domain.base.NameLikeQo; import lombok.Getter; import lombok.Setter; +import org.springframework.data.domain.Sort; import java.util.List; @@ -25,11 +26,18 @@ public class LogQo extends NameLikeQo { private List range; + private String type; + @Override public CriteriaBuilder criteriaBuilder() { return super.criteriaBuilder() .with("operator", CriteriaBuilder.Builders.LIKE) - .with("module", "success") + .with("type", "module", "success") .with("range", "startTime", CriteriaBuilder.Builders.DATE_RANGE); } + + @Override + public Sort sorts() { + return Sort.by(Sort.Order.desc("startTime")); + } } diff --git a/flyfish-logging/src/main/java/com/flyfish/framework/logging/service/SimpleAuthenticationLogger.java b/flyfish-logging/src/main/java/com/flyfish/framework/logging/service/SimpleAuthenticationLogger.java index ad03aaa..86750c2 100644 --- a/flyfish-logging/src/main/java/com/flyfish/framework/logging/service/SimpleAuthenticationLogger.java +++ b/flyfish-logging/src/main/java/com/flyfish/framework/logging/service/SimpleAuthenticationLogger.java @@ -2,11 +2,12 @@ package com.flyfish.framework.logging.service; import com.flyfish.framework.domain.base.Domain; import com.flyfish.framework.domain.po.User; +import com.flyfish.framework.logging.config.LoggingTextRegistry; import com.flyfish.framework.logging.domain.Log; import com.flyfish.framework.logging.domain.LogType; import com.flyfish.framework.service.AuthenticationLogger; +import com.flyfish.framework.service.UserFindService; import com.flyfish.framework.utils.AuthenticationMessages; -import com.flyfish.framework.utils.MapBuilder; import com.flyfish.framework.utils.UserUtils; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.userdetails.UserDetails; @@ -15,7 +16,6 @@ import org.springframework.util.MultiValueMap; import javax.annotation.Resource; import java.util.Date; -import java.util.Map; import java.util.Optional; /** @@ -26,13 +26,12 @@ import java.util.Optional; @Service public class SimpleAuthenticationLogger implements AuthenticationLogger { - private final Map uris = MapBuilder.builder() - .put("login", "登录") - .put("logout", "注销") - .build(); - @Resource private LogService logService; + @Resource + private UserFindService userService; + @Resource + private LoggingTextRegistry registry; /** * 记录成功 @@ -76,13 +75,13 @@ public class SimpleAuthenticationLogger implements AuthenticationLogger { User raw = UserUtils.toUser(user); Log log = new Log(); log.setType(LogType.AUTHENTICATION); - log.setSignature(uris.get(business)); + log.setSignature(business); log.setSuccess(true); log.setBody("为了安全,本内容隐藏"); log.setModule("登录模块"); - log.setBusiness(business); + log.setBusiness(registry.text(business)); log.setResponse(message); - log.setOperator(Optional.ofNullable(raw).map(Domain::getName).orElse("无")); + log.setOperator(Optional.ofNullable(raw).map(Domain::getName).orElse("未知")); log.setPeriod(0L); log.setStartTime(new Date()); // 写入日志 @@ -100,14 +99,14 @@ public class SimpleAuthenticationLogger implements AuthenticationLogger { private void saveError(String business, String message, String username, String error) { Log log = new Log(); log.setType(LogType.AUTHENTICATION); - log.setSignature(uris.get(business)); + log.setSignature(business); log.setSuccess(false); log.setBody("某人尝试使用用户名'" + username + "',密码:******,进行登录"); log.setModule("登录模块"); - log.setBusiness(business); + log.setBusiness(registry.text(business)); log.setError(error); log.setResponse(message); - log.setOperator("无用户"); + log.setOperator(userService.findByUsername(username).map(Domain::getName).orElse("未知")); log.setPeriod(0L); log.setStartTime(new Date()); // 写入日志 diff --git a/flyfish-user/src/main/java/com/flyfish/framework/service/UserService.java b/flyfish-user/src/main/java/com/flyfish/framework/service/UserService.java index be7e47d..a306faf 100644 --- a/flyfish-user/src/main/java/com/flyfish/framework/service/UserService.java +++ b/flyfish-user/src/main/java/com/flyfish/framework/service/UserService.java @@ -8,6 +8,9 @@ import com.flyfish.framework.service.impl.BaseServiceImpl; import com.flyfish.framework.utils.Assert; import com.flyfish.framework.utils.StrengthUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @@ -16,7 +19,7 @@ import java.util.List; import java.util.Optional; @Service -public class UserService extends BaseServiceImpl { +public class UserService extends BaseServiceImpl implements UserFindService { @Resource private PasswordEncoder passwordEncoder; @@ -27,6 +30,7 @@ public class UserService extends BaseServiceImpl { * @param username 用户 * @return 结果 */ + @Override public Optional findByUsername(String username) { return ((UserRepository) repository).findByUsername(username); } @@ -61,4 +65,5 @@ public class UserService extends BaseServiceImpl { public List getList(Qo query) { return super.getList(query); } + } diff --git a/flyfish-web/src/main/java/com/flyfish/framework/handler/JsonLogoutSuccessHandler.java b/flyfish-web/src/main/java/com/flyfish/framework/handler/JsonLogoutSuccessHandler.java index 4db2e44..4c57f04 100644 --- a/flyfish-web/src/main/java/com/flyfish/framework/handler/JsonLogoutSuccessHandler.java +++ b/flyfish-web/src/main/java/com/flyfish/framework/handler/JsonLogoutSuccessHandler.java @@ -31,6 +31,10 @@ public class JsonLogoutSuccessHandler implements ServerLogoutSuccessHandler { ServerHttpResponse response = webFilterExchange.getExchange().getResponse(); response.getHeaders().setContentType(MediaType.APPLICATION_JSON); tokenProvider.removeToken(webFilterExchange.getExchange()); + Object principal = authentication.getPrincipal(); + if ("anonymous".equals(principal)) { + return response.writeWith(authenticationAuditor.transform(Result.ok())); + } // 记录日志 return authenticationAuditor.logout((UserDetails) authentication.getPrincipal()) .then(response.writeWith(authenticationAuditor.transform(Result.ok()))); diff --git a/flyfish-web/src/main/java/com/flyfish/framework/service/UserFindService.java b/flyfish-web/src/main/java/com/flyfish/framework/service/UserFindService.java new file mode 100644 index 0000000..1a51eed --- /dev/null +++ b/flyfish-web/src/main/java/com/flyfish/framework/service/UserFindService.java @@ -0,0 +1,20 @@ +package com.flyfish.framework.service; + + +import com.flyfish.framework.domain.po.User; + +import java.util.Optional; + +/** + * 用户查找service + * @author wangyu + */ +public interface UserFindService { + + /** + * 通过用户名查找 + * @param username 用户名 + * @return 结果 + */ + Optional findByUsername(String username); +}