From 7c323c27535ace221e94e7629f5303c1697e1ed7 Mon Sep 17 00:00:00 2001 From: wangyu <727842003@qq.com> Date: Thu, 6 Jan 2022 23:12:09 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=90=8E=E7=BD=AE=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MongoUserDetailsServiceImpl.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/flyfish-user/src/main/java/com/flyfish/framework/service/MongoUserDetailsServiceImpl.java b/flyfish-user/src/main/java/com/flyfish/framework/service/MongoUserDetailsServiceImpl.java index 982a83e..2ba33e3 100644 --- a/flyfish-user/src/main/java/com/flyfish/framework/service/MongoUserDetailsServiceImpl.java +++ b/flyfish-user/src/main/java/com/flyfish/framework/service/MongoUserDetailsServiceImpl.java @@ -2,8 +2,8 @@ package com.flyfish.framework.service; import com.flyfish.framework.config.constants.UserCacheKeys; import com.flyfish.framework.configuration.jwt.TokenProvider; +import com.flyfish.framework.domain.AdminUserDetails; import com.flyfish.framework.domain.base.IUser; -import com.flyfish.framework.domain.po.User; import com.flyfish.framework.enums.UserStatus; import com.flyfish.framework.utils.Assert; import com.flyfish.framework.utils.ReactiveRedisOperations; @@ -79,27 +79,32 @@ public class MongoUserDetailsServiceImpl implements MongoUserDetailsService { public Mono findByUsername(String username) { String key = UserCacheKeys.get(username); // 优先从缓存读取,如果缓存不存在,查询转换后放入缓存 - return reactiveRedisOperations.hasKey(key).flatMap(exists -> Boolean.TRUE.equals(exists) ? reactiveRedisOperations.get(key) : + return reactiveRedisOperations.hasKey(key).flatMap(exists -> Boolean.TRUE.equals(exists) ? + reactiveRedisOperations.get(key) : userService.findByUsername(username) - .flatMap(this::validate) .flatMap(userDetailsConverter::mapToUserDetails) .flatMap(detail -> reactiveRedisOperations.set(key, detail).thenReturn(detail)) ) + .flatMap(this::validate) .switchIfEmpty(Mono.defer(() -> Mono.error(new UsernameNotFoundException("用户不存在!")))); } /** * 校验 * - * @param user 用户 + * @param details 用户 * @return 结果 */ - private Mono validate(User user) { - return checkMap.entrySet().stream() - .filter(entry -> entry.getKey().apply(user)) - .findFirst() - .map(entry -> Mono.error(entry.getValue().get())) - .orElse(Mono.just(user)); + private Mono validate(UserDetails details) { + if (details instanceof AdminUserDetails) { + AdminUserDetails user = (AdminUserDetails) details; + return checkMap.entrySet().stream() + .filter(entry -> entry.getKey().apply(user)) + .findFirst() + .map(entry -> Mono.error(entry.getValue().get())) + .orElse(Mono.just(user)); + } + return Mono.just(details); } /**