瀏覽代碼

修改responseVO系统异常返回值

xusl 2 年之前
父節點
當前提交
e6187abf9d

+ 1 - 1
backend/src/main/java/com/jiayue/ssi/backenum/ResponseEnum.java

@@ -18,7 +18,7 @@ public enum ResponseEnum {
      */
     SUCCESS(0, "操作成功!"),
     FAILED(1, "操作失败!"),
-    ERROR(-1, "系统错误!");
+    ERROR(2, "系统错误!");
 
     private Integer code;
     private String message;

+ 2 - 1
backend/src/main/java/com/jiayue/ssi/config/WebConfig.java

@@ -6,7 +6,7 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 /**
-*
+* MVC配置
 *
 * @author xsl
 * @since 2023/03/03
@@ -15,6 +15,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 public class WebConfig implements WebMvcConfigurer {
     @Override
     public void addInterceptors(InterceptorRegistry registry){
+        // 刷新token拦截器注册
         registry.addInterceptor(new TokenStatusInterceptor()).addPathPatterns("/**")
                 .excludePathPatterns("/refreshToken","/error","/getMailCode","/getVerifyCode","/login","/index.html","/user/login","/css/**","/images/**","/js/**","/fonts/**");
     }

+ 5 - 5
backend/src/main/java/com/jiayue/ssi/controller/SysUserController.java

@@ -65,21 +65,21 @@ public class SysUserController {
             return ResponseVO.fail("用户账号不能为空!");
         }
         else if (sysUserService.queryUserName(user.getUsername())!=null){
-            return ResponseVO.fail(null,user.getUsername() + "账号已存在!");
+            return ResponseVO.fail(user.getUsername() + "账号已存在!");
         }
 
         if (StringUtils.isEmpty(user.getPhonenumber())) {
-            return ResponseVO.fail(null,"手机号码不能为空!");
+            return ResponseVO.fail("手机号码不能为空!");
         }
         if (StringUtils.isEmpty(user.getNickname())) {
-            return ResponseVO.fail(null,"姓名不能为空!");
+            return ResponseVO.fail("姓名不能为空!");
         }
 
         if (StringUtils.isEmpty(user.getMailbox())){
-            return ResponseVO.fail(null,"邮箱不能为空!");
+            return ResponseVO.fail("邮箱不能为空!");
         }
         else if (sysUserService.queryMailBox(user.getMailbox())!=null){
-            return ResponseVO.fail(null,user.getMailbox() + "邮箱已存在!");
+            return ResponseVO.fail(user.getMailbox() + "邮箱已存在!");
         }
 
         // 生成8位初始密码

+ 102 - 107
backend/src/main/java/com/jiayue/ssi/filter/VerifySmFilter.java

@@ -20,52 +20,52 @@ import java.util.HashMap;
 import java.util.Map;
 
 /**
-* 验证sm过滤器
-*
-* @author xsl
-* @since 2023/02/27
-*/
+ * 验证sm过滤器
+ *
+ * @author xsl
+ * @since 2023/02/27
+ */
 @Order(4)
 public class VerifySmFilter extends OncePerRequestFilter {
     private String defaultFilterProcessUrl = "/user/login";
 
     @Override
-    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
-        Map<String,Object> stringToMap = new HashMap(16);
-        ParameterRequestWrapper initWrapper = new ParameterRequestWrapper(request);
-        // 不是登录操作
-        if (!("POST".equalsIgnoreCase(request.getMethod()) && defaultFilterProcessUrl.equals(request.getServletPath()))) {
-            // 验证token
-            String tokenStr = request.getHeader("Authorization");
-            if (StringUtils.isNotEmpty(tokenStr)){
-                // 解密token
-                String decryptTokenStr = SM2CryptUtils.decrypt(tokenStr,SecretKeyConstants.SERVER_PRIVATE_KEY);
-                String tokenSign = request.getHeader("TokenSign");
-                // 验证签名
-                boolean verifySign = SM2CryptUtils.verifySign(SecretKeyConstants.CLIENT_PUBLIC_KEY,decryptTokenStr,tokenSign);
-                if (!verifySign){
-                    // 验签失败
-                    ResponseInfo.doResponse(response,"token验签失败,不能访问系统!",401);
-                    return;
-                }
-                JwtTokenUtil jwtTokenUtil = new JwtTokenUtil();
-                if (jwtTokenUtil.isTokenExpired(decryptTokenStr)){
-                    ResponseInfo.doResponse(response,"登录超时,请重新登录!",403);
+    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) {
+        try {
+            Map<String, Object> stringToMap = new HashMap(16);
+            ParameterRequestWrapper initWrapper = new ParameterRequestWrapper(request);
+            // 不是登录操作
+            if (!("POST".equalsIgnoreCase(request.getMethod())
+                && defaultFilterProcessUrl.equals(request.getServletPath()))) {
+                // 验证token
+                String tokenStr = request.getHeader("Authorization");
+                if (StringUtils.isNotEmpty(tokenStr)) {
+                    // 解密token
+                    String decryptTokenStr = SM2CryptUtils.decrypt(tokenStr, SecretKeyConstants.SERVER_PRIVATE_KEY);
+                    String tokenSign = request.getHeader("TokenSign");
+                    // 验证签名
+                    boolean verifySign =
+                        SM2CryptUtils.verifySign(SecretKeyConstants.CLIENT_PUBLIC_KEY, decryptTokenStr, tokenSign);
+                    if (!verifySign) {
+                        // 验签失败
+                        ResponseInfo.doResponse(response, "token验签失败,不能访问系统!", 401);
+                        return;
+                    }
+                    JwtTokenUtil jwtTokenUtil = new JwtTokenUtil();
+                    if (jwtTokenUtil.isTokenExpired(decryptTokenStr)) {
+                        ResponseInfo.doResponse(response, "登录超时,请重新登录!", 403);
+                        return;
+                    }
+
+                    initWrapper.addHeader("Authorization", decryptTokenStr);
+                } else {
+                    ResponseInfo.doResponse(response, "没有令牌权限,不能访问系统!", 401);
                     return;
                 }
-
-                initWrapper.addHeader("Authorization",decryptTokenStr);
-            }
-            else{
-                ResponseInfo.doResponse(response,"没有令牌权限,不能访问系统!",401);
-                return;
             }
-        }
-        // 解密后的参数字符串
-        String decryptStr = "";
-
-        if ("POST".equalsIgnoreCase(request.getMethod())){
-
+            // 解密后的参数字符串
+            String decryptStr = "";
+            if ("POST".equalsIgnoreCase(request.getMethod())) {
                 byte[] bytes = null;
                 try {
                     bytes = initWrapper.getBodyContent(request).getBytes(StandardCharsets.UTF_8);
@@ -74,87 +74,82 @@ public class VerifySmFilter extends OncePerRequestFilter {
                 }
                 String json = new String(bytes);
                 JSONObject jsonObject = JSONUtil.parseObj(json);
-            // 验证加密的参数文本
-            String data_sm2 = jsonObject.getStr("secretData");
-            if (StringUtils.isNotEmpty(data_sm2)){
-                try {
-                    decryptStr = SM2CryptUtils.decrypt(data_sm2, SecretKeyConstants.SERVER_PRIVATE_KEY);
-                }
-                catch (Exception e){
-                    // 参数验签失败
-                    ResponseInfo.doResponse(response,"参数解密失败,不能访问系统!",401);
-                    return;
-                }
-                // 验签前端参数
-                String paramSign = jsonObject.getStr("paramSign");
-                try {
-                    // 验证签名
-                    boolean verifySign = SM2CryptUtils.verifySign(SecretKeyConstants.CLIENT_PUBLIC_KEY, decryptStr, paramSign);
-                    if (!verifySign){
+                // 验证加密的参数文本
+                String data_sm2 = jsonObject.getStr("secretData");
+                if (StringUtils.isNotEmpty(data_sm2)) {
+                    try {
+                        decryptStr = SM2CryptUtils.decrypt(data_sm2, SecretKeyConstants.SERVER_PRIVATE_KEY);
+                    } catch (Exception e) {
+                        // 参数验签失败
+                        ResponseInfo.doResponse(response, "参数解密失败,不能访问系统!", 401);
+                        return;
+                    }
+                    // 验签前端参数
+                    String paramSign = jsonObject.getStr("paramSign");
+                    try {
+                        // 验证签名
+                        boolean verifySign =
+                            SM2CryptUtils.verifySign(SecretKeyConstants.CLIENT_PUBLIC_KEY, decryptStr, paramSign);
+                        if (!verifySign) {
+                            // 验签失败
+                            ResponseInfo.doResponse(response, "参数验签失败,不能访问系统!", 401);
+                            return;
+                        }
+                    } catch (Exception e) {
                         // 验签失败
-                        ResponseInfo.doResponse(response,"参数验签失败,不能访问系统!",401);
+                        ResponseInfo.doResponse(response, "参数验签失败,不能访问系统!", 401);
                         return;
                     }
+                    if (!"".equals(decryptStr)) {
+                        stringToMap = JSONUtil.parseObj(decryptStr);
+                    }
                 }
-                catch (Exception e){
-                    // 验签失败
-                    ResponseInfo.doResponse(response,"参数验签失败,不能访问系统!",401);
-                    return;
-                }
-                if (!"".equals(decryptStr)){
-                    stringToMap = JSONUtil.parseObj(decryptStr);
-                }
-            }
-        }
-        else{
-            // get请求无参数,取出是null
-            String get_sm2Str = request.getParameter("0");
-            if (StringUtils.isNotEmpty(get_sm2Str)){
-                String[] tempStr = get_sm2Str.split("&");
-                Map<String,String> tempMap = new HashMap(16);
-                for (int i=0;i<tempStr.length;i++){
-                    String[] fieldStr = tempStr[i].split("=");
-                    tempMap.put(fieldStr[0],fieldStr[1]);
-                }
-                // 对加密串解密验签
-                try {
-                    decryptStr = SM2CryptUtils.decrypt(tempMap.get("secretData"), SecretKeyConstants.SERVER_PRIVATE_KEY);
-                }
-                catch (Exception e){
-                    // 参数验签失败
-                    ResponseInfo.doResponse(response,"参数解密失败,不能访问系统!",401);
-                    return;
-                }
-                // 验签前端参数
-                String paramSign = tempMap.get("paramSign");
-                // 验证签名
-                try {
-                    boolean verifySign = SM2CryptUtils.verifySign(SecretKeyConstants.CLIENT_PUBLIC_KEY, decryptStr, paramSign);
-                    if (!verifySign){
+            } else {
+                // get请求无参数,取出是null
+                String get_sm2Str = request.getParameter("0");
+                if (StringUtils.isNotEmpty(get_sm2Str)) {
+                    String[] tempStr = get_sm2Str.split("&");
+                    Map<String, String> tempMap = new HashMap(16);
+                    for (int i = 0; i < tempStr.length; i++) {
+                        String[] fieldStr = tempStr[i].split("=");
+                        tempMap.put(fieldStr[0], fieldStr[1]);
+                    }
+                    // 对加密串解密验签
+                    try {
+                        decryptStr =
+                            SM2CryptUtils.decrypt(tempMap.get("secretData"), SecretKeyConstants.SERVER_PRIVATE_KEY);
+                    } catch (Exception e) {
+                        // 参数验签失败
+                        ResponseInfo.doResponse(response, "参数解密失败,不能访问系统!", 401);
+                        return;
+                    }
+                    // 验签前端参数
+                    String paramSign = tempMap.get("paramSign");
+                    // 验证签名
+                    try {
+                        boolean verifySign =
+                            SM2CryptUtils.verifySign(SecretKeyConstants.CLIENT_PUBLIC_KEY, decryptStr, paramSign);
+                        if (!verifySign) {
+                            // 验签失败
+                            ResponseInfo.doResponse(response, "参数验签失败,不能访问系统!", 401);
+                            return;
+                        }
+                    } catch (Exception e) {
                         // 验签失败
-                        ResponseInfo.doResponse(response,"参数验签失败,不能访问系统!",401);
+                        ResponseInfo.doResponse(response, "参数验签失败,不能访问系统!", 401);
                         return;
                     }
-                }
-                catch (Exception e){
-                    // 验签失败
-                    ResponseInfo.doResponse(response,"参数验签失败,不能访问系统!",401);
-                    return;
-                }
-                if (!"".equals(decryptStr)){
-                    stringToMap = JSONUtil.parseObj(decryptStr).getRaw();
+                    if (!"".equals(decryptStr)) {
+                        stringToMap = JSONUtil.parseObj(decryptStr).getRaw();
+                    }
                 }
             }
-        }
-
-        ParameterRequestWrapper pr = null;
-        try {
-            pr = new ParameterRequestWrapper(initWrapper, stringToMap,decryptStr);
+            ParameterRequestWrapper pr = new ParameterRequestWrapper(initWrapper, stringToMap, decryptStr);
+            filterChain.doFilter(pr, response);
         } catch (Exception e) {
             e.printStackTrace();
-            ResponseInfo.doResponse(response,"访问失败,联系管理员!",401);
+            ResponseInfo.doResponse(response, "访问失败,联系管理员!", 401);
             return;
         }
-        filterChain.doFilter(pr, response);
     }
 }

+ 5 - 0
backend/src/main/java/com/jiayue/ssi/util/SecurityContextUtil.java

@@ -16,6 +16,11 @@ public class SecurityContextUtil {
      * @return
      */
     public static SysUser getSysUser(){
+        if (SecurityContextHolder.getContext().getAuthentication()==null){
+            SysUser sysUser = new SysUser();
+            sysUser.setUsername("test");
+            return sysUser;
+        }
         return  ((SysUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal());
     }
 }

+ 23 - 0
backend/src/test/java/com/jiayue/ssi/service/Sm2UiTest.java

@@ -0,0 +1,23 @@
+package com.jiayue.ssi.service;
+
+import com.jiayue.ssi.constant.SecretKeyConstants;
+import com.jiayue.ssi.util.SM2CryptUtils;
+
+/**
+* 解析返回前端的加密数据
+*
+* @author xsl
+* @since 2023/03/14
+*/
+public class Sm2UiTest {
+    public static void main(String[] args) {
+        // 返回前端的加密数据
+        String encrypt = "b249d7a7c5322dc66cce4cad025cd451182b841dff6ca4a35dc52c1a2145de3725ebf0aed4829d731c536d7de819a52e392748492ec86571696a621df0eabe5510fea6327f5b3da61573e9ff103c1765e234046371d8972a6547478d27219b94ecaef8ce2bfb28b9c9db5a3d64b706cf73fac1d6bde60f7d3ecd2ab2353a18d383ed85e4ad4e8a1ac27c607d12d411e69e294d8c89d7327c983566920ede54bc827b83e9f6e7514d0e9619cdddcc6b42f6a6dc608e74285a6e42";
+        // 返回前端签名数据
+        String signStr = "3046022100cabcfdfbe9969122c3748dec9e3bf0b277e1a7065a57c6654ea23694813f1c79022100da8611cc8928cdd9abb9094888c50a482918bb28aea509e0785c90b95899c9cf";
+        String text = SM2CryptUtils.decrypt(encrypt, SecretKeyConstants.CLIENT_PRIVATE_KEY);
+            System.out.println("解密:"+text);
+            boolean bo = SM2CryptUtils.verifySign(SecretKeyConstants.SERVER_PUBLIC_KEY,text,signStr);
+            System.out.println("验签:"+bo);
+    }
+}

+ 1 - 1
ui/src/views/sysManager/userManager/index.vue

@@ -384,7 +384,7 @@ export default {
                 this.getList();
               }
               if (res.code==1){
-                this.$message.error(res.message)
+                this.$message.error(res.data)
               }
               this.loading = false
             }).catch((error) => {