From 1cf88d43994ec7ec403319032a9d118b39fe3571 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期五, 25 四月 2025 14:35:35 +0800 Subject: [PATCH] 登录代码优化 --- pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java | 2 + pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/LoginVo.java | 4 +- pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java | 53 +++++++++++--------------- pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java | 12 ++++++ pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml | 14 +++++++ 5 files changed, 53 insertions(+), 32 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java index aee894c..d24d73c 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java @@ -134,6 +134,8 @@ */ List<Map<String, Object>> getRoleNamesByUserId(@Param("userId") Long userId); + Long countPhone(@Param("phone") String phone) ; + /** * 寰楀埌鎵�鏈夋墜鏈哄彿(鐧诲綍璐﹀彿) * @return diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml index 0e5f33e..3d20396 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml @@ -367,6 +367,20 @@ where id = #{id,jdbcType=BIGINT} </select> + <!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栫敤鎴疯褰曟暟--> + <select id="countPhone" resultType="java.lang.Long"> + SELECT + COUNT(*) AS recordCount + FROM ba_user user + <where> + user.supperAdmin != 1 + AND user.deleted = 0 + <if test = "phone != null and phone !=''"> + AND user.phone= #{phone} + </if> + </where> + </select> + <select id="getPhones" resultType="java.lang.String"> SELECT phone FROM ba_user WHERE deleted = 0 and disabled = 0 </select> diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/LoginVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/LoginVo.java index 57ff5e4..64adce3 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/LoginVo.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/LoginVo.java @@ -37,11 +37,11 @@ /** * 鍥惧舰楠岃瘉鐮乼oken锛屽嵆session鐨刱ey */ - private String token; + public String token; /** * 鍥惧舰楠岃瘉鐮佺粨鏋� */ - private String code; + public String code; } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java index 2e349e8..2dd7dee 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java @@ -113,42 +113,35 @@ if(vo.orgTag == null || vo.orgTag.trim().length() == 0){ return BaseResponseUtils.buildErrorMsg("鏈�夋嫨缁勭粐鍗曚綅"); } + if(vo.token == null || vo.token.trim().length() == 0){ + return BaseResponseUtils.buildErrorMsg("鏃爐oken"); + } + if(vo.code == null || vo.code.trim().length() == 0){ + return BaseResponseUtils.buildErrorMsg("璇疯緭鍏ラ獙璇佺爜"); + } //鎶婄粍缁囧崟浣嶆爣绛句綔涓烘暟鎹簮鍚嶇О DataSourceContext.set(vo.orgTag); - String token = Optional.ofNullable(vo.getToken()).orElse(""); - String code = Optional.ofNullable(vo.getCode()).orElse(""); - - if(token.length() > 0 && code.length() > 0) { - // 浠巗ession涓幏鍙栭獙璇佺爜 - //HttpSession session = (HttpSession) request.getSession(); - //String localCode = session.getAttribute(token).toString(); - - Map map = sv.getCodeByToken(token); - Long expiration = Long.parseLong(map.get("expiration").toString()); - Long currentTimestamp = System.currentTimeMillis(); - if(currentTimestamp > expiration) { - return BaseResponseUtils.buildErrorMsg("楠岃瘉鐮佸凡瓒呮椂"); - } - - // 浠庢暟鎹簱鑾峰彇楠岃瘉鐮� - String localCode = map.get("code").toString(); - if(!code.equals(localCode)) { - return BaseResponseUtils.buildErrorMsg("楠岃瘉鐮侀敊璇�"); - } + // 浠庢暟鎹簱鑾峰彇楠岃瘉鐮� + Map map = sv.getCodeByToken(vo.token); + Long expiration = Long.parseLong(map.get("expiration").toString()); + Long currentTimestamp = System.currentTimeMillis(); + if(currentTimestamp > expiration) { + return BaseResponseUtils.buildErrorMsg("楠岃瘉鐮佸凡瓒呮椂"); + } + String localCode = map.get("code").toString(); + if(!vo.code.equals(localCode)) { + return BaseResponseUtils.buildErrorMsg("楠岃瘉鐮侀敊璇�"); } - //寰楀埌鎵�鏈夌敤鎴疯处鍙� - List<String> phones = sv.getPhones(); - if(!phones.contains(vo.phone)){ + if(!sv.existPhone(vo.phone)){ return BaseResponseUtils.buildErrorMsg("璐﹀彿涓嶅瓨鍦�"); } - String uuid ; - BaUser userPo ; + String uuid4Token = null; + BaUser userPo = null ; try { - //Boolean flag = cacheManager.getCacheNames().isEmpty() ; - uuid = UUID.randomUUID().toString(); + uuid4Token = UUID.randomUUID().toString(); if(!StringUtils.isNullOrEmpty(vo.password)){ /* 濡傛灉鍓嶇杩涜浜哹ase64鍔犲瘑 @@ -156,7 +149,7 @@ */ vo.password = MD5.encrypt(vo.password) ; } - userPo = this.sv.loginWithMapperXml(uuid, vo.phone, vo.password); + userPo = this.sv.loginWithMapperXml(uuid4Token, vo.phone, vo.password); } catch (Exception e) { log.error("鐢ㄦ埛鐧诲綍寮傚父", e); return BaseResponseUtils.buildException(e.getMessage()) ; @@ -164,10 +157,10 @@ if(userPo != null){ UserVo uVo = UserVoMapper.INSTANCT.po2vo(userPo); - uVo.token = uuid ; + uVo.token = uuid4Token ; return BaseResponseUtils.buildSuccess(uVo); }else{ - return BaseResponseUtils.buildErrorMsg("瀵嗙爜閿欒"); + return BaseResponseUtils.buildErrorMsg("鐧诲綍澶辫触"); } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java index bed8576..05687dd 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java @@ -73,6 +73,18 @@ } /** + * 鍒ゆ柇鎵嬫満鍙锋槸鍚﹀瓨鍦� + * @return + */ + public boolean existPhone(String phone){ + Long count = baUserMapper.countPhone(phone) ; + if(count == null || count == 0){ + return false ; + } + return true ; + } + + /** * 寰楀埌鎵�鏈夌敤鎴锋墜鏈哄彿 * @return */ -- Gitblit v1.8.0