From 10c1709404f981f4fb87185078fcee616346f5ce Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 17 十月 2022 14:27:22 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/service/sys/TokenService.java | 42 +++++++++++-- src/main/java/com/lf/server/service/sys/UserService.java | 56 ++++++++++-------- src/main/java/com/lf/server/controller/all/SignController.java | 24 ++----- src/main/java/com/lf/server/helper/WebHelper.java | 4 src/main/java/com/lf/server/interceptor/AuthInterceptor.java | 6 +- src/main/java/com/lf/server/service/sys/LoginService.java | 11 ++- 6 files changed, 86 insertions(+), 57 deletions(-) diff --git a/src/main/java/com/lf/server/controller/all/SignController.java b/src/main/java/com/lf/server/controller/all/SignController.java index 60106ae..8099c6d 100644 --- a/src/main/java/com/lf/server/controller/all/SignController.java +++ b/src/main/java/com/lf/server/controller/all/SignController.java @@ -121,27 +121,19 @@ @PostMapping(value = "/login", produces = "application/json; charset=UTF-8") public ResponseMsg<TokenEntity> login(@RequestBody UserEntity user, HttpServletRequest req, HttpServletResponse res) { try { - if (user == null) { - return fail("璇疯緭鍏ョ敤鎴峰悕鍜屽瘑鐮侊紒", null); - } - if (StringHelper.isEmpty(user.getUid())) { - return fail("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒", null); - } - if (StringHelper.isEmpty(user.getPwd())) { - return fail("瀵嗙爜涓嶈兘涓虹┖锛�", null); + String str = userService.validateNewPwd(user); + if (str != null) { + return fail(str, null); } - // 瑙e瘑 - String uid = RsaHelper.decrypt(user.getUid()); - String pwd = RsaHelper.decrypt(user.getPwd()); - - UserEntity ue = userService.selectByUid(uid); + UserEntity ue = userService.selectByUid(user.getUid()); if (ue == null) { return fail("鐢ㄦ埛鍚嶄笉瀛樺湪锛�", null); } - LoginEntity le = loginService.getNewLogin(ue.getId(), 1, req); - if (!Md5Helper.validatePassword(pwd, ue.getPwd())) { + LoginEntity le = loginService.getNewLogin(ue.getId(), 1, 1, 1, req); + if (!Md5Helper.validatePassword(user.getPwd(), ue.getPwd())) { + tokenService.setPwdErrCache(ue); le.setStatus(0); le.setDescr("瀵嗙爜閿欒"); loginService.insertLogin(le); @@ -194,7 +186,7 @@ if (flag) { // 鍐欐棩蹇� UserEntity ue = tokenService.getCurrentUser(req); - LoginEntity le = loginService.getNewLogin(ue.getId(), 2, req); + LoginEntity le = loginService.getNewLogin(ue.getId(), 1, 2, 1, req); Integer rows = loginService.insertLogin(le); } diff --git a/src/main/java/com/lf/server/helper/WebHelper.java b/src/main/java/com/lf/server/helper/WebHelper.java index 53db6b9..d3d5922 100644 --- a/src/main/java/com/lf/server/helper/WebHelper.java +++ b/src/main/java/com/lf/server/helper/WebHelper.java @@ -132,7 +132,7 @@ */ public static void saveToken2Cookie(String token, HttpServletRequest request, HttpServletResponse response) { // 鍏堝垹闄� - deleteAll(request, response); + deleteCookies(request, response); // 鍐嶄繚瀛� saveCookie(StaticData.TOKEN_COOKIE_KEY, token, response); @@ -182,7 +182,7 @@ * @param request * @param response */ - public static void deleteAll(HttpServletRequest request, HttpServletResponse response) { + public static void deleteCookies(HttpServletRequest request, HttpServletResponse response) { Cookie[] cookies = request.getCookies(); if (cookies != null && cookies.length > 0) { for (Cookie c : cookies) { diff --git a/src/main/java/com/lf/server/interceptor/AuthInterceptor.java b/src/main/java/com/lf/server/interceptor/AuthInterceptor.java index 30e9a57..dac54cc 100644 --- a/src/main/java/com/lf/server/interceptor/AuthInterceptor.java +++ b/src/main/java/com/lf/server/interceptor/AuthInterceptor.java @@ -62,9 +62,9 @@ return WebHelper.write2Page(response, NO_LOGIN); } - Object objCount = tokenService.redisService.get(RedisCacheKey.signPwdError(ue.getUid())); - if (objCount != null && (int) objCount > SettingData.PWD_ERR_COUNT) { - return WebHelper.write2Page(response, JSON.toJSONString(new ResponseMsg<String>(HttpStatus.NO_LOGIN_ERROR, SettingData.PWD_ERR_TIME + "鍒嗛挓鍐呯姝㈢櫥褰�"))); + if (tokenService.isUidDisable(ue)) { + tokenService.logout(token, request, response); + return WebHelper.write2Page(response, JSON.toJSONString(new ResponseMsg<String>(HttpStatus.USER_LOCK_ERROR, SettingData.PWD_ERR_TIME + "鍒嗛挓鍐呯姝㈢櫥褰�"))); } // noinspection AlibabaRemoveCommentedCode diff --git a/src/main/java/com/lf/server/service/sys/LoginService.java b/src/main/java/com/lf/server/service/sys/LoginService.java index b010fb1..6a5b8e1 100644 --- a/src/main/java/com/lf/server/service/sys/LoginService.java +++ b/src/main/java/com/lf/server/service/sys/LoginService.java @@ -70,13 +70,16 @@ return loginMapper.selectLoginAll(); } - public LoginEntity getNewLogin(int userid, int type, HttpServletRequest req) { + /** + * 鑾峰彇鏂扮殑鐧诲綍瀹炰綋绫� + */ + public LoginEntity getNewLogin(int userid, int appId, int type, int status, HttpServletRequest req) { LoginEntity le = new LoginEntity(); - le.setAppid(1); + le.setUserid(userid); + le.setAppid(appId); le.setIp(WebHelper.getIpAddress(req)); le.setType(type); - le.setStatus(1); - le.setUserid(userid); + le.setStatus(status); le.setOptime(WebHelper.getCurrentTimestamp()); return le; 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..89cbc2a 100644 --- a/src/main/java/com/lf/server/service/sys/TokenService.java +++ b/src/main/java/com/lf/server/service/sys/TokenService.java @@ -142,8 +142,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 +153,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 +169,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; @@ -214,9 +218,6 @@ /** * 鑾峰彇褰撳墠鐢ㄦ埛 - * - * @param req - * @return */ public UserEntity getCurrentUser(HttpServletRequest req) { String token = WebHelper.getToken(req); @@ -243,4 +244,29 @@ 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); + } + + /** + * 鐢ㄦ埛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; + } + + public void logoffToken(String token) { + // + } } diff --git a/src/main/java/com/lf/server/service/sys/UserService.java b/src/main/java/com/lf/server/service/sys/UserService.java index 51eba3c..8d49085 100644 --- a/src/main/java/com/lf/server/service/sys/UserService.java +++ b/src/main/java/com/lf/server/service/sys/UserService.java @@ -108,17 +108,34 @@ } /** - * 楠岃瘉鏂扮敤鎴峰瘑鐮� + * 楠岃瘉鐢ㄦ埛瀹炰綋绫� */ - public String validateNewPwd(UserEntity entity) { + public String validateUserEntity(UserEntity entity) { if (entity == null) { return "娌℃湁鎵惧埌鐢ㄦ埛"; } + if (StringHelper.isEmpty(entity.getUid())) { + return "鐢ㄦ埛ID涓嶈兘涓虹┖"; + } if (StringHelper.isEmpty(entity.getPwd())) { - return "瀵嗙爜涓嶈兘涓虹┖"; + return "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖"; } + return null; + } + + /** + * 楠岃瘉鏂扮敤鎴峰瘑鐮� + */ + public String validateNewPwd(UserEntity entity) { try { + String str = validateUserEntity(entity); + if (str != null) { + return str; + } + + // 瑙e瘑 + String uid = RsaHelper.decrypt(entity.getUid()); String pwd = RsaHelper.decrypt(entity.getPwd()); if (!StringHelper.checkPwdValid(pwd)) { return "瀵嗙爜涓嶇鍚堣姹�"; @@ -126,6 +143,7 @@ String newPwd = Md5Helper.reverse(Md5Helper.generate(pwd)); entity.setPwd(newPwd); + entity.setUid(uid); return null; } catch (Exception ex) { @@ -137,18 +155,20 @@ * 楠岃瘉鑰佺敤鎴峰瘑鐮� */ public String validateOldPwd(UserEntity entity) { - if (entity == null) { - return "娌℃湁鎵惧埌鐢ㄦ埛"; - } - if (StringHelper.isEmpty(entity.getPwd())) { - return "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖"; - } - try { + String str = validateUserEntity(entity); + if (str != null) { + return str; + } + if (StringHelper.isEmpty(entity.getSalt())) { + return "鏂板瘑鐮佷笉鑳戒负绌�"; + } + + String uid = RsaHelper.decrypt(entity.getUid()); String pwd = RsaHelper.decrypt(entity.getPwd()); String salt = RsaHelper.decrypt(entity.getSalt()); - UserEntity ue = selectUser(entity.getId()); + UserEntity ue = selectByUid(uid); if (ue == null) { return "娌℃湁鎵惧埌鐢ㄦ埛"; } @@ -163,6 +183,7 @@ String newPwd = Md5Helper.reverse(Md5Helper.generate(salt)); entity.setPwd(newPwd); entity.setSalt(null); + entity.setUid(uid); return null; } catch (Exception ex) { @@ -214,18 +235,5 @@ } catch (Exception ex) { return "瀵嗙爜瑙e瘑澶辫触"; } - } - - /** - * 璁剧疆瀵嗙爜閿欒缂撳瓨 - * - * @param 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); } } -- Gitblit v1.9.3