Commit 56ea65e53d073b99e9d18bcde27a3158d7d546e9

Authored by YunaiV
1 parent b9693c3e

优化登录逻辑的实现,封装统一的登录成功方法,创建 Session + 记录登录日志

yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java
@@ -87,7 +87,7 @@ public class MemberAuthServiceImpl implements MemberAuthService { @@ -87,7 +87,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
87 LoginUser loginUser = this.login0(reqVO.getMobile(), reqVO.getPassword()); 87 LoginUser loginUser = this.login0(reqVO.getMobile(), reqVO.getPassword());
88 88
89 // 缓存登录用户到 Redis 中,返回 sessionId 编号 89 // 缓存登录用户到 Redis 中,返回 sessionId 编号
90 - return userSessionApi.createUserSession(loginUser, userIp, userAgent); 90 + return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_USERNAME, userIp, userAgent);
91 } 91 }
92 92
93 @Override 93 @Override
@@ -101,11 +101,10 @@ public class MemberAuthServiceImpl implements MemberAuthService { @@ -101,11 +101,10 @@ public class MemberAuthServiceImpl implements MemberAuthService {
101 Assert.notNull(user, "获取用户失败,结果为空"); 101 Assert.notNull(user, "获取用户失败,结果为空");
102 102
103 // 执行登陆 103 // 执行登陆
104 - this.createLoginLog(user.getMobile(), LoginLogTypeEnum.LOGIN_SMS, LoginResultEnum.SUCCESS);  
105 LoginUser loginUser = AuthConvert.INSTANCE.convert(user); 104 LoginUser loginUser = AuthConvert.INSTANCE.convert(user);
106 105
107 // 缓存登录用户到 Redis 中,返回 sessionId 编号 106 // 缓存登录用户到 Redis 中,返回 sessionId 编号
108 - return userSessionApi.createUserSession(loginUser, userIp, userAgent); 107 + return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_SMS, userIp, userAgent);
109 } 108 }
110 109
111 @Override 110 @Override
@@ -122,7 +121,6 @@ public class MemberAuthServiceImpl implements MemberAuthService { @@ -122,7 +121,6 @@ public class MemberAuthServiceImpl implements MemberAuthService {
122 if (user == null) { 121 if (user == null) {
123 throw exception(USER_NOT_EXISTS); 122 throw exception(USER_NOT_EXISTS);
124 } 123 }
125 - this.createLoginLog(user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL, LoginResultEnum.SUCCESS);  
126 124
127 // 创建 LoginUser 对象 125 // 创建 LoginUser 对象
128 LoginUser loginUser = AuthConvert.INSTANCE.convert(user); 126 LoginUser loginUser = AuthConvert.INSTANCE.convert(user);
@@ -131,7 +129,7 @@ public class MemberAuthServiceImpl implements MemberAuthService { @@ -131,7 +129,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
131 socialUserApi.bindSocialUser(AuthConvert.INSTANCE.convert(loginUser.getId(), getUserType().getValue(), reqVO)); 129 socialUserApi.bindSocialUser(AuthConvert.INSTANCE.convert(loginUser.getId(), getUserType().getValue(), reqVO));
132 130
133 // 缓存登录用户到 Redis 中,返回 sessionId 编号 131 // 缓存登录用户到 Redis 中,返回 sessionId 编号
134 - return userSessionApi.createUserSession(loginUser, userIp, userAgent); 132 + return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_SOCIAL, userIp, userAgent);
135 } 133 }
136 134
137 @Override 135 @Override
@@ -150,6 +148,13 @@ public class MemberAuthServiceImpl implements MemberAuthService { @@ -150,6 +148,13 @@ public class MemberAuthServiceImpl implements MemberAuthService {
150 return sessionId; 148 return sessionId;
151 } 149 }
152 150
  151 + private String createUserSessionAfterLoginSuccess(LoginUser loginUser, LoginLogTypeEnum logType, String userIp, String userAgent) {
  152 + // 插入登陆日志
  153 + createLoginLog(loginUser.getUsername(), logType, LoginResultEnum.SUCCESS);
  154 + // 缓存登录用户到 Redis 中,返回 sessionId 编号
  155 + return userSessionApi.createUserSession(loginUser, userIp, userAgent);
  156 + }
  157 +
153 @Override 158 @Override
154 public void socialBind(Long userId, AppAuthSocialBindReqVO reqVO) { 159 public void socialBind(Long userId, AppAuthSocialBindReqVO reqVO) {
155 // 绑定社交用户(新增) 160 // 绑定社交用户(新增)
@@ -186,9 +191,7 @@ public class MemberAuthServiceImpl implements MemberAuthService { @@ -186,9 +191,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
186 this.createLoginLog(username, logType, LoginResultEnum.UNKNOWN_ERROR); 191 this.createLoginLog(username, logType, LoginResultEnum.UNKNOWN_ERROR);
187 throw exception(AUTH_LOGIN_FAIL_UNKNOWN); 192 throw exception(AUTH_LOGIN_FAIL_UNKNOWN);
188 } 193 }
189 - // 登录成功的日志  
190 Assert.notNull(authentication.getPrincipal(), "Principal 不会为空"); 194 Assert.notNull(authentication.getPrincipal(), "Principal 不会为空");
191 - this.createLoginLog(username, logType, LoginResultEnum.SUCCESS);  
192 return (LoginUser) authentication.getPrincipal(); 195 return (LoginUser) authentication.getPrincipal();
193 } 196 }
194 197
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java
@@ -107,7 +107,7 @@ public class AdminAuthServiceImpl implements AdminAuthService { @@ -107,7 +107,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
107 LoginUser loginUser = this.login0(reqVO.getUsername(), reqVO.getPassword()); 107 LoginUser loginUser = this.login0(reqVO.getUsername(), reqVO.getPassword());
108 108
109 // 缓存登陆用户到 Redis 中,返回 sessionId 编号 109 // 缓存登陆用户到 Redis 中,返回 sessionId 编号
110 - return userSessionService.createUserSession(loginUser, userIp, userAgent); 110 + return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_USERNAME, userIp, userAgent);
111 } 111 }
112 112
113 private void verifyCaptcha(AuthLoginReqVO reqVO) { 113 private void verifyCaptcha(AuthLoginReqVO reqVO) {
@@ -155,9 +155,7 @@ public class AdminAuthServiceImpl implements AdminAuthService { @@ -155,9 +155,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
155 this.createLoginLog(username, logTypeEnum, LoginResultEnum.UNKNOWN_ERROR); 155 this.createLoginLog(username, logTypeEnum, LoginResultEnum.UNKNOWN_ERROR);
156 throw exception(AUTH_LOGIN_FAIL_UNKNOWN); 156 throw exception(AUTH_LOGIN_FAIL_UNKNOWN);
157 } 157 }
158 - // 登录成功的日志  
159 Assert.notNull(authentication.getPrincipal(), "Principal 不会为空"); 158 Assert.notNull(authentication.getPrincipal(), "Principal 不会为空");
160 - this.createLoginLog(username, logTypeEnum, LoginResultEnum.SUCCESS);  
161 return (LoginUser) authentication.getPrincipal(); 159 return (LoginUser) authentication.getPrincipal();
162 } 160 }
163 161
@@ -207,7 +205,6 @@ public class AdminAuthServiceImpl implements AdminAuthService { @@ -207,7 +205,6 @@ public class AdminAuthServiceImpl implements AdminAuthService {
207 if (user == null) { 205 if (user == null) {
208 throw exception(USER_NOT_EXISTS); 206 throw exception(USER_NOT_EXISTS);
209 } 207 }
210 - this.createLoginLog(user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL, LoginResultEnum.SUCCESS);  
211 208
212 // 创建 LoginUser 对象 209 // 创建 LoginUser 对象
213 LoginUser loginUser = this.buildLoginUser(user); 210 LoginUser loginUser = this.buildLoginUser(user);
@@ -216,7 +213,7 @@ public class AdminAuthServiceImpl implements AdminAuthService { @@ -216,7 +213,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
216 socialUserService.bindSocialUser(AuthConvert.INSTANCE.convert(loginUser.getId(), getUserType().getValue(), reqVO)); 213 socialUserService.bindSocialUser(AuthConvert.INSTANCE.convert(loginUser.getId(), getUserType().getValue(), reqVO));
217 214
218 // 缓存登录用户到 Redis 中,返回 sessionId 编号 215 // 缓存登录用户到 Redis 中,返回 sessionId 编号
219 - return userSessionService.createUserSession(loginUser, userIp, userAgent); 216 + return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_SOCIAL, userIp, userAgent);
220 } 217 }
221 218
222 @Override 219 @Override
@@ -232,6 +229,13 @@ public class AdminAuthServiceImpl implements AdminAuthService { @@ -232,6 +229,13 @@ public class AdminAuthServiceImpl implements AdminAuthService {
232 socialUserService.bindSocialUser(AuthConvert.INSTANCE.convert(loginUser.getId(), getUserType().getValue(), reqVO)); 229 socialUserService.bindSocialUser(AuthConvert.INSTANCE.convert(loginUser.getId(), getUserType().getValue(), reqVO));
233 230
234 // 缓存登录用户到 Redis 中,返回 sessionId 编号 231 // 缓存登录用户到 Redis 中,返回 sessionId 编号
  232 + return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_SOCIAL, userIp, userAgent);
  233 + }
  234 +
  235 + private String createUserSessionAfterLoginSuccess(LoginUser loginUser, LoginLogTypeEnum logType, String userIp, String userAgent) {
  236 + // 插入登陆日志
  237 + createLoginLog(loginUser.getUsername(), logType, LoginResultEnum.SUCCESS);
  238 + // 缓存登录用户到 Redis 中,返回 sessionId 编号
235 return userSessionService.createUserSession(loginUser, userIp, userAgent); 239 return userSessionService.createUserSession(loginUser, userIp, userAgent);
236 } 240 }
237 241