From c509bd8047cfd582c59bba66d148b236e45d038d Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期四, 12 一月 2023 10:15:15 +0800
Subject: [PATCH] 1

---
 src/main/java/com/lf/server/service/sys/TokenService.java |   65 +++++++++++++++++++++++++-------
 1 files changed, 50 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/lf/server/service/sys/TokenService.java b/src/main/java/com/lf/server/service/sys/TokenService.java
index 39c169d..a1e2dee 100644
--- a/src/main/java/com/lf/server/service/sys/TokenService.java
+++ b/src/main/java/com/lf/server/service/sys/TokenService.java
@@ -27,9 +27,6 @@
 @Service
 public class TokenService implements TokenMapper {
     @Autowired
-    public RedisService redisService;
-
-    @Autowired
     TokenMapper tokenMapper;
 
     @Autowired
@@ -37,6 +34,9 @@
 
     @Autowired
     LoginService loginService;
+
+    @Autowired
+    RedisService redisService;
 
     @Override
     public Integer selectCount(String name, Integer type) {
@@ -96,14 +96,15 @@
     /**
      * 鑾峰彇鏂扮殑浠ょ墝瀹炰綋绫�
      */
-    public TokenEntity getNewToken(int userid, HttpServletRequest req) {
+    public TokenEntity getNewToken(UserEntity ue, HttpServletRequest req) {
         TokenEntity te = new TokenEntity();
         te.setToken(WebHelper.getGuid());
         te.setDuration(SettingData.TOKEN_EXPIRE);
         te.setExpire(WebHelper.getTimestamp(SettingData.TOKEN_EXPIRE));
         te.setType(0);
         te.setIp(WebHelper.getIpAddress(req));
-        te.setCreateUser(userid);
+        te.setCreateUser(ue.getId());
+        te.setUname(ue.getUname());
 
         return te;
     }
@@ -142,8 +143,8 @@
             return false;
         }
 
-        // 娓呴櫎Cookie WebHelper.saveCookie(StaticData.TOKEN_COOKIE_KEY, "", 60, res)
-        WebHelper.deleteAll(req, res);
+        // 娓呴櫎Cookie
+        WebHelper.deleteCookies(req, res);
 
         // 鑾峰彇褰撳墠鐢ㄦ埛
         UserEntity ue = getCurrentUser(req);
@@ -153,9 +154,13 @@
 
         // 娓呴櫎缂撳瓨
         String tokenKey = RedisCacheKey.signTokenKey(token);
-        redisService.delete(tokenKey);
+        if (redisService.hasKey(tokenKey)) {
+            redisService.delete(tokenKey);
+        }
         String userKey = RedisCacheKey.signUserKey(te.getToken());
-        redisService.delete(userKey);
+        if (redisService.hasKey(userKey)) {
+            redisService.delete(userKey);
+        }
 
         // db锛岃缃护鐗岃繃鏈�
         te.setUpdateUser(ue.getId());
@@ -165,7 +170,7 @@
         }
 
         // 鍐欐棩蹇�
-        LoginEntity le = loginService.getNewLogin(ue.getId(), 3, req);
+        LoginEntity le = loginService.getNewLogin(ue.getId(), 1, 3, 1, req);
         rows = loginService.insertLogin(le);
 
         return rows > 0;
@@ -183,7 +188,7 @@
 
         // redis
         Object obj = redisService.get(tokenKey);
-        if (obj != null && obj instanceof TokenEntity) {
+        if (obj instanceof TokenEntity) {
             return (TokenEntity) obj;
         }
 
@@ -214,9 +219,6 @@
 
     /**
      * 鑾峰彇褰撳墠鐢ㄦ埛
-     *
-     * @param req
-     * @return
      */
     public UserEntity getCurrentUser(HttpServletRequest req) {
         String token = WebHelper.getToken(req);
@@ -228,7 +230,7 @@
 
         // redis
         Object obj = redisService.get(userKey);
-        if (obj != null && obj instanceof UserEntity) {
+        if (obj instanceof UserEntity) {
             return (UserEntity) obj;
         }
 
@@ -243,4 +245,37 @@
 
         return ue;
     }
+
+    /**
+     * 璁剧疆瀵嗙爜閿欒缂撳瓨
+     */
+    public void setPwdErrCache(UserEntity ue) {
+        String key = RedisCacheKey.signPwdError(ue.getUid());
+        Object objCount = redisService.get(key);
+
+        int count = objCount == null ? 1 : (int) objCount + 1;
+        redisService.put(key, count, SettingData.PWD_ERR_TIME, TimeUnit.MINUTES);
+
+        // 璁板綍鏃ュ織
+        HttpServletRequest req = WebHelper.getRequest();
+        LoginEntity le = loginService.getNewLogin(ue.getId(), 1, 1, 0, req);
+        le.setDescr("瀵嗙爜涓嶆纭�");
+        loginService.insertLogin(le);
+
+        if (count >= SettingData.PWD_ERR_COUNT) {
+            String token = WebHelper.getToken(req);
+            HttpServletResponse res = WebHelper.getResponse();
+            logout(token, req, res);
+        }
+    }
+
+    /**
+     * 鐢ㄦ埛ID鏄�/鍚︾鐢�
+     */
+    public boolean isUidDisable(UserEntity ue) {
+        String key = RedisCacheKey.signPwdError(ue.getUid());
+        Object objCount = redisService.get(key);
+
+        return objCount != null && (int) objCount >= SettingData.PWD_ERR_COUNT;
+    }
 }

--
Gitblit v1.9.3