From d692b45b22f985aff4635a5bb8b8958ae9bcd6dd Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期五, 21 十月 2022 17:50:09 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/service/sys/TokenService.java | 103 +++++++++++++++++++++++++++++---------------------- 1 files changed, 58 insertions(+), 45 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 233c8ce..49965af 100644 --- a/src/main/java/com/lf/server/service/sys/TokenService.java +++ b/src/main/java/com/lf/server/service/sys/TokenService.java @@ -1,8 +1,9 @@ package com.lf.server.service.sys; +import com.lf.server.entity.all.SettingData; import com.lf.server.entity.sys.LoginEntity; import com.lf.server.entity.sys.TokenEntity; -import com.lf.server.entity.sys.UsersEntity; +import com.lf.server.entity.sys.UserEntity; import com.lf.server.entity.all.RedisCacheKey; import com.lf.server.helper.StringHelper; import com.lf.server.helper.WebHelper; @@ -26,25 +27,25 @@ @Service public class TokenService implements TokenMapper { @Autowired - private RedisService redisService; + public RedisService redisService; @Autowired TokenMapper tokenMapper; @Autowired - UsersService usersService; + UserService usersService; @Autowired LoginService loginService; @Override - public Integer selectCount(String token) { - return tokenMapper.selectCount(token); + public Integer selectCount(String name, Integer type) { + return tokenMapper.selectCount(name, type); } @Override - public List<TokenEntity> selectByPage(String token, Integer limit, Integer offset) { - return tokenMapper.selectByPage(token, limit, offset); + public List<TokenEntity> selectByPage(String name, Integer type, Integer limit, Integer offset) { + return tokenMapper.selectByPage(name, type, limit, offset); } @Override @@ -94,32 +95,21 @@ /** * 鑾峰彇鏂扮殑浠ょ墝瀹炰綋绫� - * - * @param userid - * @param req - * @return */ public TokenEntity getNewToken(int userid, HttpServletRequest req) { - int duration = 240; - TokenEntity te = new TokenEntity(); te.setToken(WebHelper.getGuid()); - te.setDuration(duration); - te.setExpire(WebHelper.getTimestamp(duration)); + te.setDuration(SettingData.TOKEN_EXPIRE); + te.setExpire(WebHelper.getTimestamp(SettingData.TOKEN_EXPIRE)); te.setType(0); te.setIp(WebHelper.getIpAddress(req)); te.setCreateUser(userid); - return te; } /** * 鏄�/鍚︾櫥褰� - * - * @param req - * @param res - * @return */ public Boolean isLogin(HttpServletRequest req, HttpServletResponse res) { String token = WebHelper.getToken(req); @@ -145,10 +135,6 @@ /** * 鐧诲嚭 - * - * @param token - * @param req - * @return */ public Boolean logout(String token, HttpServletRequest req, HttpServletResponse res) { TokenEntity te = getEntityByToken(token); @@ -156,20 +142,24 @@ return false; } - // 娓呴櫎Cookie WebHelper.saveCookie(StaticData.TOKEN_COOKIE_KEY, "", 60, res) - WebHelper.deleteAll(req, res); + // 娓呴櫎Cookie + WebHelper.deleteCookies(req, res); // 鑾峰彇褰撳墠鐢ㄦ埛 - UsersEntity ue = getCurrentUser(req); + UserEntity ue = getCurrentUser(req); if (ue == null) { return false; } // 娓呴櫎缂撳瓨 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()); @@ -179,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; @@ -187,9 +177,6 @@ /** * 鏍规嵁浠ょ墝鑾峰彇瀹炰綋 - * - * @param token - * @return */ public TokenEntity getEntityByToken(String token) { if (StringHelper.isNull(token)) { @@ -215,12 +202,8 @@ /** * 淇濆瓨token - * - * @param te - * @param req - * @param res */ - public void saveToken(UsersEntity ue, TokenEntity te, HttpServletRequest req, HttpServletResponse res) { + public void saveToken(UserEntity ue, TokenEntity te, HttpServletRequest req, HttpServletResponse res) { // 淇濆瓨鑷矯ookie WebHelper.saveToken2Cookie(te.getToken(), req, res); @@ -235,11 +218,8 @@ /** * 鑾峰彇褰撳墠鐢ㄦ埛 - * - * @param req - * @return */ - public UsersEntity getCurrentUser(HttpServletRequest req) { + public UserEntity getCurrentUser(HttpServletRequest req) { String token = WebHelper.getToken(req); if (StringHelper.isNull(token)) { return null; @@ -249,12 +229,12 @@ // redis Object obj = redisService.get(userKey); - if (obj != null && obj instanceof UsersEntity) { - return (UsersEntity) obj; + if (obj != null && obj instanceof UserEntity) { + return (UserEntity) obj; } // db - UsersEntity ue = usersService.selectByToken(token); + UserEntity ue = usersService.selectByToken(token); if (ue != null) { TokenEntity te = getEntityByToken(token); if (te != null) { @@ -264,4 +244,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