From f53755d3756e72d7fd5421b56502b5439764a886 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期三, 19 七月 2023 09:28:40 +0800
Subject: [PATCH] 修改登录验证增加app用户过期token时限
---
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | 38 ++++++++++++++++++
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java | 4 -
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java | 13 ++++++
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java | 20 ++++++++--
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java | 14 +++++++
6 files changed, 82 insertions(+), 9 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index 736c164..780665c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -54,7 +54,7 @@
AjaxResult ajax = AjaxResult.success();
// 鐢熸垚浠ょ墝
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
- loginBody.getUuid());
+ loginBody.getUuid(),loginBody.getApp());
ajax.put(Constants.TOKEN, token);
return ajax;
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index 4a939ff..c58fd3e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -44,7 +44,6 @@
*
* @author ruoyi
*/
-@Api(tags = "鐢ㄦ埛淇℃伅")
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController
@@ -64,7 +63,7 @@
/**
* 鑾峰彇鐢ㄦ埛鍒楄〃
*/
- @ApiOperation("鑾峰彇鐢ㄦ埛鍒楄〃")
+
@ApiOperationSupport(includeParameters={"user.userId"})
@PreAuthorize("@ss.hasPermi('system:user:list')")
@GetMapping("/list")
@@ -186,7 +185,6 @@
/**
* 鍒犻櫎鐢ㄦ埛
*/
- @ApiOperation(value = "鍒犻櫎鐢ㄦ埛")
@PreAuthorize("@ss.hasPermi('system:user:remove')")
@Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.DELETE)
@DeleteMapping("/{userIds}")
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
index b5bc8c8..3d6e809 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
@@ -27,6 +27,20 @@
*/
private String uuid;
+ /**
+ * 鏄惁APP鐢ㄦ埛
+ */
+ private Boolean isApp;
+
+
+ public Boolean getApp() {
+ return isApp;
+ }
+
+ public void setApp(Boolean app) {
+ isApp = app;
+ }
+
public String getUsername()
{
return username;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
index 2fefaa0..c2a07d4 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
@@ -71,6 +71,19 @@
*/
private SysUser user;
+ /**
+ * 鏄惁app鐢ㄦ埛
+ */
+ private Boolean isApp;
+
+ public Boolean getIsApp() {
+ return isApp;
+ }
+
+ public void setIsApp(Boolean isApp) {
+ this.isApp = isApp;
+ }
+
public String getUserId()
{
return userId;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index 78d2213..cd67a89 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -95,7 +95,43 @@
getRongCloudToken(loginUser);
return token;
}
-
+ public String login(String username, String password, String code, String uuid,Boolean isApp) {
+ boolean captchaEnabled = configService.selectCaptchaEnabled();
+ // 楠岃瘉鐮佸紑鍏�
+ if (captchaEnabled) {
+ validateCaptcha(username, code, uuid);
+ }
+ // 鐢ㄦ埛楠岃瘉
+ Authentication authentication = null;
+ try {
+ UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
+ AuthenticationContextHolder.setContext(authenticationToken);
+ // 璇ユ柟娉曚細鍘昏皟鐢║serDetailsServiceImpl.loadUserByUsername
+ authentication = authenticationManager.authenticate(authenticationToken);
+ } catch (Exception e) {
+ if (e instanceof BadCredentialsException) {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+ throw new UserPasswordNotMatchException();
+ } else {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
+ throw new ServiceException(e.getMessage());
+ }
+ } finally {
+ AuthenticationContextHolder.clearContext();
+ }
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+ LoginUser loginUser = (LoginUser) authentication.getPrincipal();
+ recordLoginInfo(loginUser.getUserId());
+ // 鐢熸垚token
+ if(StringUtils.isNotNull(isApp))
+ {
+ loginUser.setIsApp(isApp);
+ }
+ String token = tokenService.createToken(loginUser);
+ //鑾峰彇铻嶄簯token
+ getRongCloudToken(loginUser);
+ return token;
+ }
/**
* 鏍¢獙楠岃瘉鐮�
*
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
index 3d41241..f4bfa37 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
@@ -142,10 +142,22 @@
public void refreshToken(LoginUser loginUser)
{
loginUser.setLoginTime(System.currentTimeMillis());
- loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
- // 鏍规嵁uuid灏唋oginUser缂撳瓨
- String userKey = getTokenKey(loginUser.getToken());
- redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
+ if(StringUtils.isNull(loginUser.getIsApp()))
+ {
+
+ loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
+ // 鏍规嵁uuid灏唋oginUser缂撳瓨
+ String userKey = getTokenKey(loginUser.getToken());
+ redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
+ }
+ else
+ {
+ loginUser.setExpireTime(loginUser.getLoginTime() + 365*24*60 * MILLIS_MINUTE);
+ // 鏍规嵁uuid灏唋oginUser缂撳瓨
+ String userKey = getTokenKey(loginUser.getToken());
+ redisCache.setCacheObject(userKey, loginUser, 365*24*60, TimeUnit.MINUTES);
+ }
+
}
/**
--
Gitblit v1.9.3