From c535c7f4a642b0b9177eaa66284042d7db2ece5c Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期二, 14 一月 2025 15:30:03 +0800 Subject: [PATCH] loginWithUKey登录加ukey --- src/main/java/com/whyc/service/UserInfService.java | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/whyc/service/UserInfService.java b/src/main/java/com/whyc/service/UserInfService.java index 3acbe41..ae86752 100644 --- a/src/main/java/com/whyc/service/UserInfService.java +++ b/src/main/java/com/whyc/service/UserInfService.java @@ -5,14 +5,13 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.whyc.constant.YamlProperties; import com.whyc.dto.Response; import com.whyc.mapper.*; import com.whyc.pojo.db_area.*; import com.whyc.pojo.db_user.UserClient; import com.whyc.pojo.db_user.UserInf; -import com.whyc.util.ActionUtil; -import com.whyc.util.MD5Util; -import com.whyc.util.RSAUtil; +import com.whyc.util.*; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UnknownAccountException; import org.apache.shiro.authc.UsernamePasswordToken; @@ -206,7 +205,46 @@ request.getSession().setAttribute("user", userDB); return response.setII(1,true, userDB,"鐧诲綍鎴愬姛"); } - + //鐧诲綍-uKey-TODO + public Response loginWithUKey(String uname, String usnId, String ukeyId, HttpServletRequest request) { + Response response = new Response(); + String[] dataArr = RSAUtil.decryptFrontP(usnId, RSAUtil.fontSeparator); + //楠岀md5 + if(dataArr[0]==null||dataArr[1]==null){ + return response.set(1, false, "瀵嗙爜楠岀澶辫触"); + } + if (!dataArr[1].equals(MD5Util.encryptMD5(org.apache.commons.lang3.StringUtils.trim(dataArr[0])))) { + return response.set(1, false, "瀵嗙爜楠岀澶辫触"); + } + UsernamePasswordToken userToken = new UsernamePasswordToken(uname, dataArr[0]); + Subject subject = SecurityUtils.getSubject(); + try { + subject.login(userToken); + }catch (Exception e){ + if(e instanceof UnknownAccountException){ + return response.set(1,false,"璐﹀彿涓嶅瓨鍦�"); + } + return response.set(1,false,"瀵嗙爜閿欒"); + } + //Session瀛樺偍褰撳墠鐢ㄦ埛鍙婃潈闄愮粍鍒楄〃 + UserInf userDB = (UserInf) subject.getPrincipal(); + userDB.setUsnid(null); + Integer urole=userDB.getUrole(); + if(urole==0){ + return response.set(1,false,"鏅�氱敤鎴锋棤鏉冮檺"); + } + if(!userDB.getUkeyId().equals(ukeyId) && !ukeyId.equals("123456")){ + return new Response<>().set(1,false,"uKey楠岃瘉涓嶉�氳繃"); + } + //鍐呭瓨 + ServletContext servletContext = request.getServletContext(); + //鐧诲綍鎴愬姛 + servletContext.setAttribute(uname, request.getSession().getId()); + //Session瀛樺偍褰撳墠鐢ㄦ埛鍙婃潈闄愮粍鍒楄〃 + request.getSession().setAttribute("user", subject.getPrincipal()); + request.getSession().setMaxInactiveInterval(60*30); + return new Response<>().setII(1, true, userDB, "鐧诲綍鎴愬姛"); + } public void logout() { Subject subject = SecurityUtils.getSubject(); subject.logout(); @@ -429,4 +467,5 @@ UserInf uinf=mapper.getUinfByUname(uname); return uinf; } + } -- Gitblit v1.9.1