diff --git a/README.md b/README.md
index 42772dd..2d0a9c0 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,8 @@
* 采用前后端分离的模式,微服务版本前端(基于 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue))。
* 后端采用Spring Boot、Spring Cloud & Alibaba。
-* 注册中心、配置中心选型Nacos,为权限认证使用OAuth2。
+* 注册中心、配置中心选型Nacos,权限认证使用OAuth2。
+* 流量控制框架选型Sentinel。
* 感谢[ruoyi-cloud-design](https://gitee.com/zhangmrit/ruoyi-cloud),[pig](https://gitee.com/log4j/pig)。
* 如需不分离应用,请移步 [RuoYi](https://gitee.com/y_project/RuoYi),如需分离应用,请移步 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue)
* 阿里云优惠券:[点我进入](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console)
@@ -95,9 +96,13 @@ com.ruoyi
 |
 |
+
+
+  |
+  |
-  |
+  |
 |
diff --git a/pom.xml b/pom.xml
index 973c4d1..112369e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,14 +6,14 @@
com.ruoyi
ruoyi
- 1.0.0
+ 2.0.0
ruoyi
http://www.ruoyi.vip
若依微服务系统
- 1.0.0
+ 2.0.0
UTF-8
UTF-8
1.8
@@ -31,7 +31,6 @@
1.2.70
3.17
2.6.2
- 1.19
@@ -51,7 +50,7 @@
com.alibaba.cloud
spring-cloud-alibaba-dependencies
- 2.1.0.RELEASE
+ 2.2.1.RELEASE
pom
import
@@ -146,13 +145,6 @@
commons-pool2
${common-pool.version}
-
-
-
- eu.bitwalker
- UserAgentUtils
- ${bitwalker.version}
-
diff --git a/ruoyi-api/pom.xml b/ruoyi-api/pom.xml
index 7c65578..2437cfe 100644
--- a/ruoyi-api/pom.xml
+++ b/ruoyi-api/pom.xml
@@ -4,7 +4,7 @@
com.ruoyi
ruoyi
- 1.0.0
+ 2.0.0
4.0.0
diff --git a/ruoyi-api/ruoyi-api-system/pom.xml b/ruoyi-api/ruoyi-api-system/pom.xml
index 5033318..6f9997c 100644
--- a/ruoyi-api/ruoyi-api-system/pom.xml
+++ b/ruoyi-api/ruoyi-api-system/pom.xml
@@ -5,7 +5,7 @@
com.ruoyi
ruoyi-api
- 1.0.0
+ 2.0.0
4.0.0
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java
index 38345d7..8a1f590 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java
@@ -3,6 +3,7 @@ package com.ruoyi.system.api;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.SysOperLog;
@@ -20,9 +21,20 @@ public interface RemoteLogService
* 保存系统日志
*
* @param sysOperLog 日志实体
- * @param from 内部调用标志
* @return 结果
*/
@PostMapping("/operlog")
R saveLog(@RequestBody SysOperLog sysOperLog);
+
+ /**
+ * 保存访问记录
+ *
+ * @param username 用户名称
+ * @param status 状态
+ * @param message 消息
+ * @return 结果
+ */
+ @PostMapping("/logininfor")
+ R saveLogininfor(@RequestParam("username") String username, @RequestParam("status") String status,
+ @RequestParam("message") String message);
}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
index 2c8eee8..64bcd53 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
@@ -20,7 +20,6 @@ public interface RemoteUserService
* 通过用户名查询用户信息
*
* @param username 用户名
- * @param from 调用标志
* @return 结果
*/
@GetMapping(value = "/user/info/{username}")
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
index 10320fe..f3b54ff 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
@@ -58,10 +58,6 @@ public class SysOperLog extends BaseEntity
@Excel(name = "操作地址")
private String operIp;
- /** 操作地点 */
- @Excel(name = "操作地点")
- private String operLocation;
-
/** 请求参数 */
@Excel(name = "请求参数")
private String operParam;
@@ -193,16 +189,6 @@ public class SysOperLog extends BaseEntity
this.operIp = operIp;
}
- public String getOperLocation()
- {
- return operLocation;
- }
-
- public void setOperLocation(String operLocation)
- {
- this.operLocation = operLocation;
- }
-
public String getOperParam()
{
return operParam;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java
index 96f6c33..8d1d9cd 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java
@@ -29,6 +29,13 @@ public class RemoteLogFallbackFactory implements FallbackFactory saveLogininfor(String username, String status, String message)
+ {
+ return null;
+ }
};
+
}
}
diff --git a/ruoyi-auth/pom.xml b/ruoyi-auth/pom.xml
index e1a8c74..e70cd30 100644
--- a/ruoyi-auth/pom.xml
+++ b/ruoyi-auth/pom.xml
@@ -4,7 +4,7 @@
com.ruoyi
ruoyi
- 1.0.0
+ 2.0.0
4.0.0
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
index 963e063..4058f75 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -1,5 +1,6 @@
package com.ruoyi.auth.controller;
+import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
@@ -9,8 +10,11 @@ import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.system.api.RemoteLogService;
/**
* token 控制
@@ -24,6 +28,9 @@ public class TokenController
@Autowired
private TokenStore tokenStore;
+ @Autowired
+ private RemoteLogService remoteLogService;
+
@DeleteMapping("/logout")
public R> logout(@RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authHeader)
{
@@ -45,6 +52,13 @@ public class TokenController
// 清空 refresh token
OAuth2RefreshToken refreshToken = accessToken.getRefreshToken();
tokenStore.removeRefreshToken(refreshToken);
+ Map map = accessToken.getAdditionalInformation();
+ if (map.containsKey(SecurityConstants.DETAILS_USERNAME))
+ {
+ String username = (String) map.get(SecurityConstants.DETAILS_USERNAME);
+ // 记录用户退出日志
+ remoteLogService.saveLogininfor(username, Constants.LOGOUT, "退出成功");
+ }
return R.ok();
}
}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/handler/AuthenticationSuccessEventHandler.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/handler/AuthenticationSuccessEventHandler.java
new file mode 100644
index 0000000..f6fda37
--- /dev/null
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/handler/AuthenticationSuccessEventHandler.java
@@ -0,0 +1,39 @@
+package com.ruoyi.auth.handler;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
+import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Component;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.security.domain.LoginUser;
+import com.ruoyi.system.api.RemoteLogService;
+
+/**
+ * 认证成功处理
+ *
+ * @author ruoyi
+ */
+@Component
+public class AuthenticationSuccessEventHandler implements ApplicationListener
+{
+ @Autowired
+ private RemoteLogService remoteLogService;
+
+ @Override
+ public void onApplicationEvent(AuthenticationSuccessEvent event)
+ {
+ Authentication authentication = (Authentication) event.getSource();
+ if (StringUtils.isNotEmpty(authentication.getAuthorities())
+ && authentication.getPrincipal() instanceof LoginUser)
+ {
+ LoginUser user = (LoginUser) authentication.getPrincipal();
+
+ String username = user.getUsername();
+
+ // 记录用户登录日志
+ remoteLogService.saveLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");
+ }
+ }
+}
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index eb3a0e5..77c0a0a 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -4,7 +4,7 @@
com.ruoyi
ruoyi
- 1.0.0
+ 2.0.0
4.0.0
diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml
index afb5909..09ebe3e 100644
--- a/ruoyi-common/ruoyi-common-core/pom.xml
+++ b/ruoyi-common/ruoyi-common-core/pom.xml
@@ -5,7 +5,7 @@
com.ruoyi
ruoyi-common
- 1.0.0
+ 2.0.0
4.0.0
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
index 8ae378a..2613ce0 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
@@ -12,6 +12,11 @@ public class Constants
*/
public static final String UTF8 = "UTF-8";
+ /**
+ * GBK 字符集
+ */
+ public static final String GBK = "GBK";
+
/**
* http请求
*/
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java
index 87f4735..9e0123d 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java
@@ -16,6 +16,7 @@ public class SecurityConstants
* 授权token url
*/
public static final String AUTH_TOKEN = "/oauth/token";
+
/**
* 注销token url
*/
diff --git a/ruoyi-common/ruoyi-common-datascope/pom.xml b/ruoyi-common/ruoyi-common-datascope/pom.xml
index b318f59..b89792e 100644
--- a/ruoyi-common/ruoyi-common-datascope/pom.xml
+++ b/ruoyi-common/ruoyi-common-datascope/pom.xml
@@ -5,7 +5,7 @@
com.ruoyi
ruoyi-common
- 1.0.0
+ 2.0.0
4.0.0
diff --git a/ruoyi-common/ruoyi-common-log/pom.xml b/ruoyi-common/ruoyi-common-log/pom.xml
index a3b7977..a75f289 100644
--- a/ruoyi-common/ruoyi-common-log/pom.xml
+++ b/ruoyi-common/ruoyi-common-log/pom.xml
@@ -5,7 +5,7 @@
com.ruoyi
ruoyi-common
- 1.0.0
+ 2.0.0
4.0.0
@@ -23,11 +23,5 @@
ruoyi-common-security
-
-
- eu.bitwalker
- UserAgentUtils
-
-
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-redis/pom.xml b/ruoyi-common/ruoyi-common-redis/pom.xml
index 407257b..ecea0c5 100644
--- a/ruoyi-common/ruoyi-common-redis/pom.xml
+++ b/ruoyi-common/ruoyi-common-redis/pom.xml
@@ -5,7 +5,7 @@
com.ruoyi
ruoyi-common
- 1.0.0
+ 2.0.0
4.0.0
diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java
index 8d8223d..0499feb 100644
--- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java
+++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java
@@ -1,6 +1,5 @@
package com.ruoyi.common.redis.configure;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
@@ -22,7 +21,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
public class RedisConfig extends CachingConfigurerSupport
{
@Bean
- @ConditionalOnMissingBean(name = "redisTemplate")
@SuppressWarnings(value = { "unchecked", "rawtypes", "deprecation" })
public RedisTemplate