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 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 37 insertions(+), 1 deletions(-)

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;
+    }
     /**
      * 鏍¢獙楠岃瘉鐮�
      *

--
Gitblit v1.9.3