From cfe431f7938d40cbf2478119baa8a0eab9b746d6 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期五, 21 四月 2023 12:55:27 +0800 Subject: [PATCH] 登录时密码加密,记录登录错误次数 --- ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java | 23 ++++++++++++++++++++++- 1 files changed, 22 insertions(+), 1 deletions(-) diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java index c8235e2..3b459dd 100644 --- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java +++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java @@ -1,6 +1,7 @@ package com.ycl.service.user.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.druid.sql.PagerUtils; @@ -49,6 +50,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.util.*; import java.util.function.Consumer; import java.util.stream.Collectors; @@ -258,12 +260,31 @@ //瀵嗙爜闇�瑕佸鎴风鍔犲瘑鍚庝紶閫� try { AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username); + + UmsAdmin admin = userDetails.getUmsAdmin(); + LocalDateTime nowTime = LocalDateTime.now(); + nowTime = nowTime.plusMinutes(-15); + if (admin.getPasswordErrorNum() != null && admin.getPasswordErrorNum() >= 5 + && admin.getPasswordErrorLastTime().isAfter(nowTime)) { + admin.setPasswordErrorLastTime(LocalDateTime.now()); + updateById(admin); + Asserts.fail("鐧诲綍澶辫触瓒呰繃5娆★紝姝よ处鍙疯閿佸畾锛岃15鍒嗛挓鍚庡啀璇曘��"); + } if (!passwordEncoder.matches(password, userDetails.getPassword())) { + if (admin.getPasswordErrorNum() == null) { + admin.setPasswordErrorNum(1); + } else { + admin.setPasswordErrorNum(admin.getPasswordErrorNum() + 1); + } + admin.setPasswordErrorLastTime(LocalDateTime.now()); + updateById(admin); Asserts.fail("瀵嗙爜涓嶆纭�"); } if (!userDetails.isEnabled()) { Asserts.fail("甯愬彿宸茶绂佺敤"); } + admin.setPasswordErrorNum(0); + updateById(admin); UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication); @@ -430,7 +451,7 @@ List<UmsMenu> resourceList = getResourceList(admin.getId()); return new AdminUserDetails(admin, resourceList); } - throw new UsernameNotFoundException("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒"); + throw new UsernameNotFoundException("鐢ㄦ埛涓嶅瓨鍦�"); } @Override -- Gitblit v1.8.0