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