bihuisong 1 year ago
parent
commit
943997f04a

+ 0 - 5
ruoyi-admin/pom.xml

@@ -73,11 +73,6 @@
             <version>1.18.0</version>
         </dependency>
 
-        <!-- 集成redis依赖  -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-redis</artifactId>
-        </dependency>
 
     </dependencies>
 

+ 23 - 19
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SecurityController.java

@@ -2,17 +2,22 @@ package com.ruoyi.web.controller.system;
 
 
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.system.domain.TokenRequest;
 import com.ruoyi.web.controller.tool.RsaUtil;
 import com.ruoyi.web.controller.tool.SecretKeyBo;
 import com.ruoyi.web.controller.tool.StringUtils;
-import com.ruoyi.web.service.RedisService;
+import com.ruoyi.common.redis.RedisService;
+import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authc.AuthenticationException;
 import org.apache.shiro.authc.UsernamePasswordToken;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.shiro.subject.Subject;
 import org.springframework.web.bind.annotation.*;
-
+import com.ruoyi.common.utils.CookieUtils;
 import javax.annotation.Resource;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.security.NoSuchAlgorithmException;
 import java.util.concurrent.TimeUnit;
 
@@ -34,7 +39,7 @@ public class SecurityController {
      */
     @PostMapping("/getRemoteSecretKey")
     @ResponseBody
-    public R<?> getRemoteSecretKey() {
+    public Result<?> getRemoteSecretKey() {
         String publicKey;
         try {
             SecretKeyBo bo = RsaUtil.genKeyPair();
@@ -44,9 +49,9 @@ public class SecurityController {
             throw new RuntimeException(e);
         }
         if (StringUtils.isNotEmpty(publicKey)) {
-            return R.ok(publicKey, "操作成功");
+            return Result.ok(publicKey, "操作成功");
         }
-        return R.fail("操作失败");
+        return Result.fail("操作失败");
     }
 
 
@@ -54,31 +59,30 @@ public class SecurityController {
      * 获取token
      */
     @PostMapping("/getToken")
-    public R<?> getToken(@RequestBody TokenRequest form) {
+    public Result<?> getToken(@RequestBody TokenRequest form,HttpServletRequest request) {
+        Result<Object> result = new Result<>();
         //解密密码字符串
         String privateKey = redisService.getCacheObject("remoteSecretKey");
         try {
             form.setPassword(RsaUtil.decrypt(form.getPassword(), privateKey));
         } catch (Exception e) {
-            R<Object> objectR = new R<>();
-            objectR.setCode(40002);
-            objectR.setMsg("获取token失败");
-            return objectR;
+            result.setCode(40002);
+            result.setMsg("获取token失败");
+            return result;
         }
-        UsernamePasswordToken token = new UsernamePasswordToken(form.getUsername(), form.getPassword(), false);
-//        Subject subject = SecurityUtils.getSubject();
+        UsernamePasswordToken token = new UsernamePasswordToken(form.getUsername(), form.getPassword(), true);
+        Subject subject = SecurityUtils.getSubject();
         try {
-//            subject.login(token);
-            return R.ok(token);
+            subject.login(token);
+            return Result.ok(subject);
         } catch (AuthenticationException e) {
             String msg = "用户或密码错误";
             if (com.ruoyi.common.utils.StringUtils.isNotEmpty(e.getMessage())) {
                 msg = e.getMessage();
             }
-            R<Object> objectR = new R<>();
-            objectR.setCode(40000);
-            objectR.setMsg(msg);
-            return objectR;
+            result.setCode(40000);
+            result.setMsg(msg);
+            return result;
         }
     }
 

+ 19 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -45,10 +45,28 @@ user:
 
 # Spring配置
 spring:
+  # redis 配置
   redis:
+    # 地址
     host: www.sooka.onest.com
+    # 端口,默认为16379
     port: 16379
+    # 数据库索引
+    database: 8
+    # 密码
     password: sooka123456
+    # 连接超时时间
+    timeout: 10s
+    lettuce:
+      pool:
+        # 连接池中的最小空闲连接
+        min-idle: 0
+        # 连接池中的最大空闲连接
+        max-idle: 8
+        # 连接池的最大数据库连接数
+        max-active: 8
+        # #连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1ms
   # 模板引擎
   thymeleaf:
     mode: HTML
@@ -102,7 +120,7 @@ shiro:
     # 首页地址
     indexUrl: /index
     # 验证码开关
-    captchaEnabled: true
+    captchaEnabled: false
     # 验证码类型 math 数字计算 char 字符验证
     captchaType: math
   cookie:

+ 17 - 0
ruoyi-common/pom.xml

@@ -95,6 +95,23 @@
             <artifactId>javax.servlet-api</artifactId>
         </dependency>
 
+        <!-- 集成redis依赖  -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+
+        <!-- pool 对象池 -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-pool2</artifactId>
+        </dependency>
+
+        <!-- SpringBoot Websocket -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 108 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Result.java

@@ -0,0 +1,108 @@
+package com.ruoyi.common.core.domain;
+
+import java.io.Serializable;
+
+public class Result<T> implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /** 成功 */
+    public static final int SUCCESS = 200;
+
+    /** 失败 */
+    public static final int FAIL = 500;
+
+    private int code;
+
+    private String msg;
+
+    private T data;
+
+    public static <T> Result<T> ok()
+    {
+        return restResult(null, SUCCESS, "操作成功");
+    }
+
+    public static <T> Result<T> ok(T data)
+    {
+        return restResult(data, SUCCESS, "操作成功");
+    }
+
+    public static <T> Result<T> ok(T data, String msg)
+    {
+        return restResult(data, SUCCESS, msg);
+    }
+
+    public static <T> Result<T> fail()
+    {
+        return restResult(null, FAIL, "操作失败");
+    }
+
+    public static <T> Result<T> fail(String msg)
+    {
+        return restResult(null, FAIL, msg);
+    }
+
+    public static <T> Result<T> fail(T data)
+    {
+        return restResult(data, FAIL, "操作失败");
+    }
+
+    public static <T> Result<T> fail(T data, String msg)
+    {
+        return restResult(data, FAIL, msg);
+    }
+
+    public static <T> Result<T> fail(int code, String msg)
+    {
+        return restResult(null, code, msg);
+    }
+
+    private static <T> Result<T> restResult(T data, int code, String msg)
+    {
+        Result<T> apiResult = new Result<>();
+        apiResult.setCode(code);
+        apiResult.setData(data);
+        apiResult.setMsg(msg);
+        return apiResult;
+    }
+
+    public int getCode()
+    {
+        return code;
+    }
+
+    public void setCode(int code)
+    {
+        this.code = code;
+    }
+
+    public String getMsg()
+    {
+        return msg;
+    }
+
+    public void setMsg(String msg)
+    {
+        this.msg = msg;
+    }
+
+    public T getData()
+    {
+        return data;
+    }
+
+    public void setData(T data)
+    {
+        this.data = data;
+    }
+
+    public static <T> Boolean isError(Result<T> ret)
+    {
+        return !isSuccess(ret);
+    }
+
+    public static <T> Boolean isSuccess(Result<T> ret)
+    {
+        return Result.SUCCESS == ret.getCode();
+    }
+}

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/service/RedisService.java

@@ -1,4 +1,4 @@
-package com.ruoyi.web.service;
+package com.ruoyi.common.redis;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.BoundSetOperations;

+ 2 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java

@@ -294,6 +294,8 @@ public class ShiroConfig
         filterChainDefinitionMap.put("/login", "anon,captchaValidate");
         // 注册相关
         filterChainDefinitionMap.put("/register", "anon,captchaValidate");
+        //远程获取token和密钥白名单
+        filterChainDefinitionMap.put("/auth/**", "anon,captchaValidate");
         // 系统权限列表
         // filterChainDefinitionMap.putAll(SpringUtils.getBean(IMenuService.class).selectPermsAll());