diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/user/LoginDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/user/LoginDto.java index 79ec5d4..e70a1a3 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/system/user/LoginDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/system/user/LoginDto.java @@ -30,6 +30,11 @@ public class LoginDto { @NotNull(message = "邮箱验证码不能为空") private String emailCode; + @Schema(name = "type", title = "登录类型") + @NotBlank(message = "登录类型不能为空") + @NotNull(message = "登录类型能为空") + private String type; + @Schema(name = "readMeDay", title = "记住我的天数") private Long readMeDay = 1L; } diff --git a/service/src/main/java/cn/bunny/services/security/filter/TokenLoginFilterService.java b/service/src/main/java/cn/bunny/services/security/filter/TokenLoginFilterService.java index 8234f34..d6b77a3 100644 --- a/service/src/main/java/cn/bunny/services/security/filter/TokenLoginFilterService.java +++ b/service/src/main/java/cn/bunny/services/security/filter/TokenLoginFilterService.java @@ -59,12 +59,19 @@ public class TokenLoginFilterService extends UsernamePasswordAuthenticationFilte try { loginDto = objectMapper.readValue(request.getInputStream(), LoginDto.class); + // type不能为空 + String type = loginDto.getType(); + if (!StringUtils.hasText(type)) { + out(response, Result.error(ResultCodeEnum.REQUEST_IS_EMPTY)); + return null; + } + String emailCode = loginDto.getEmailCode(); String username = loginDto.getUsername(); String password = loginDto.getPassword(); // 如果有邮箱验证码,表示是邮箱登录 - if (StringUtils.hasText(emailCode)) { + if (type.equals("email")) { emailCode = emailCode.toLowerCase(); Object redisEmailCode = redisTemplate.opsForValue().get(RedisUserConstant.getAdminUserEmailCodePrefix(username)); if (redisEmailCode == null) { diff --git a/service/src/main/java/cn/bunny/services/security/service/impl/CustomUserDetailsServiceImpl.java b/service/src/main/java/cn/bunny/services/security/service/impl/CustomUserDetailsServiceImpl.java index 9ac8a7a..3cd22ff 100644 --- a/service/src/main/java/cn/bunny/services/security/service/impl/CustomUserDetailsServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/security/service/impl/CustomUserDetailsServiceImpl.java @@ -49,7 +49,6 @@ public class CustomUserDetailsServiceImpl implements cn.bunny.services.security. return new CustomUser(adminUser, AuthorityUtils.createAuthorityList()); } - /** * 前台用户登录接口 * @@ -63,10 +62,12 @@ public class CustomUserDetailsServiceImpl implements cn.bunny.services.security. Long readMeDay = loginDto.getReadMeDay(); // 查询用户相关内容 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .eq(AdminUser::getUsername, username) - .or() - .eq(AdminUser::getEmail, username); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (loginDto.getType().equals("email")) { + queryWrapper.eq(AdminUser::getEmail, username); + } else { + queryWrapper.eq(AdminUser::getUsername, username); + } AdminUser user = userMapper.selectOne(queryWrapper); // 判断用户是否为空