From 1bca1b9c61676b48cc3137d3003e520c75ecdd92 Mon Sep 17 00:00:00 2001 From: aijinhui <aijinhui> Date: 星期六, 13 一月 2024 10:57:36 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | 62 +++++++++++-------------------- 1 files changed, 22 insertions(+), 40 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 cd67a89..7e23657 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 @@ -1,9 +1,9 @@ package com.ruoyi.framework.web.service; import javax.annotation.Resource; - import com.ruoyi.rongcloud.service.RongCloudService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -36,6 +36,11 @@ */ @Component public class SysLoginService { + + // 鏄惁鍏佽璐︽埛澶氱粓绔悓鏃剁櫥褰曪紙true鍏佽 false涓嶅厑璁革級 + @Value("${token.soloLogin}") + private boolean soloLogin; + @Autowired private TokenService tokenService; @@ -50,6 +55,7 @@ @Autowired private ISysConfigService configService; + @Resource RongCloudService rongCloudService; @@ -63,6 +69,7 @@ * @return 缁撴灉 */ public String login(String username, String password, String code, String uuid) { + boolean captchaEnabled = configService.selectCaptchaEnabled(); // 楠岃瘉鐮佸紑鍏� if (captchaEnabled) { @@ -89,47 +96,20 @@ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser.getUserId()); - // 鐢熸垚token - String token = tokenService.createToken(loginUser); - //鑾峰彇铻嶄簯token - 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)) + if (!soloLogin) { - loginUser.setIsApp(isApp); + // 濡傛灉鐢ㄦ埛涓嶅厑璁稿缁堢鍚屾椂鐧诲綍锛屾竻闄ょ紦瀛樹俊鎭� + String userIdKey = Constants.LOGIN_USERID_KEY + loginUser.getUser().getUserId(); + String userKey = redisCache.getCacheObject(userIdKey); + if (StringUtils.isNotEmpty(userKey)) + { + redisCache.deleteObject(userIdKey); + redisCache.deleteObject(userKey); + } } - String token = tokenService.createToken(loginUser); - //鑾峰彇铻嶄簯token getRongCloudToken(loginUser); + // 鐢熸垚token + String token = tokenService.createToken(loginUser); return token; } /** @@ -171,15 +151,17 @@ * * @param loginUser 鐧诲綍鐢ㄦ埛 */ - public void getRongCloudToken(LoginUser loginUser) { + public String getRongCloudToken(LoginUser loginUser) { try { String userId = loginUser.getUserId(); String nickName = loginUser.getUser().getNickName(); String token = rongCloudService.getToken(userId, nickName); + loginUser.setRongCloudToken(token); SysUser sysUser = new SysUser(); sysUser.setUserId(userId); sysUser.setRongCloudToken(token); userService.updateUserProfile(sysUser); + return token; } catch (Exception ex) { throw ex; } -- Gitblit v1.9.3