From d8c34ebf8156e0e493315da91028a6416fcae82a Mon Sep 17 00:00:00 2001 From: ShiSiWei <12764015+ssw_1_0@user.noreply.gitee.com> Date: Tue, 24 Oct 2023 21:36:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9auth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../four/auth/controller/TokenController.java | 4 +-- .../java/com/four/auth/form/LoginBody.java | 12 ++++++- .../four/auth/service/SysLoginService.java | 36 +++++++++---------- .../four/auth/service/SysPasswordService.java | 16 ++++----- .../auth/service/SysRecordLogService.java | 10 +++--- src/main/resources/bootstrap.yml | 6 ++-- 6 files changed, 48 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/four/auth/controller/TokenController.java b/src/main/java/com/four/auth/controller/TokenController.java index 21e46fd..e3fc8e2 100644 --- a/src/main/java/com/four/auth/controller/TokenController.java +++ b/src/main/java/com/four/auth/controller/TokenController.java @@ -19,7 +19,7 @@ import com.four.system.api.model.LoginUser; /** * token 控制 - * + * * @author ruoyi */ @RestController @@ -35,7 +35,7 @@ public class TokenController public R login(@RequestBody LoginBody form) { // 用户登录 - LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword()); + LoginUser userInfo = sysLoginService.login(form.getEmail(), form.getPassword()); // 获取登录token return R.ok(tokenService.createToken(userInfo)); } diff --git a/src/main/java/com/four/auth/form/LoginBody.java b/src/main/java/com/four/auth/form/LoginBody.java index e47ae99..c4651d9 100644 --- a/src/main/java/com/four/auth/form/LoginBody.java +++ b/src/main/java/com/four/auth/form/LoginBody.java @@ -2,7 +2,7 @@ package com.four.auth.form; /** * 用户登录对象 - * + * * @author ruoyi */ public class LoginBody @@ -12,6 +12,7 @@ public class LoginBody */ private String username; + private String email; /** * 用户密码 */ @@ -22,6 +23,15 @@ public class LoginBody return username; } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + public void setUsername(String username) { this.username = username; diff --git a/src/main/java/com/four/auth/service/SysLoginService.java b/src/main/java/com/four/auth/service/SysLoginService.java index 744034c..ad43226 100644 --- a/src/main/java/com/four/auth/service/SysLoginService.java +++ b/src/main/java/com/four/auth/service/SysLoginService.java @@ -20,7 +20,7 @@ import com.four.system.api.model.LoginUser; /** * 登录校验方法 - * + * * @author ruoyi */ @Component @@ -41,63 +41,63 @@ public class SysLoginService /** * 登录 */ - public LoginUser login(String username, String password) + public LoginUser login(String email, String password) { // 用户名或密码为空 错误 - if (StringUtils.isAnyBlank(username, password)) + if (StringUtils.isAnyBlank(email, password)) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写"); + recordLogService.recordLogininfor(email, Constants.LOGIN_FAIL, "用户/密码必须填写"); throw new ServiceException("用户/密码必须填写"); } // 密码如果不在指定范围内 错误 if (password.length() < UserConstants.PASSWORD_MIN_LENGTH || password.length() > UserConstants.PASSWORD_MAX_LENGTH) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户密码不在指定范围"); + recordLogService.recordLogininfor(email, Constants.LOGIN_FAIL, "用户密码不在指定范围"); throw new ServiceException("用户密码不在指定范围"); } // 用户名不在指定范围内 错误 - if (username.length() < UserConstants.USERNAME_MIN_LENGTH - || username.length() > UserConstants.USERNAME_MAX_LENGTH) + if (email.length() < UserConstants.USERNAME_MIN_LENGTH + || email.length() > UserConstants.USERNAME_MAX_LENGTH) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名不在指定范围"); + recordLogService.recordLogininfor(email, Constants.LOGIN_FAIL, "用户名不在指定范围"); throw new ServiceException("用户名不在指定范围"); } // IP黑名单校验 String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单"); + recordLogService.recordLogininfor(email, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单"); throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); } // 查询用户信息 - R userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); + R userResult = remoteUserService.getUserInfo(email, SecurityConstants.INNER); if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); - throw new ServiceException("登录用户:" + username + " 不存在"); + recordLogService.recordLogininfor(email, Constants.LOGIN_FAIL, "登录用户不存在"); + throw new ServiceException("登录用户:" + email + " 不存在"); } if (R.FAIL == userResult.getCode()) { throw new ServiceException(userResult.getMsg()); } - + LoginUser userInfo = userResult.getData(); SysUser user = userResult.getData().getSysUser(); if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除"); - throw new ServiceException("对不起,您的账号:" + username + " 已被删除"); + recordLogService.recordLogininfor(email, Constants.LOGIN_FAIL, "对不起,您的账号已被删除"); + throw new ServiceException("对不起,您的账号:" + email + " 已被删除"); } if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员"); - throw new ServiceException("对不起,您的账号:" + username + " 已停用"); + recordLogService.recordLogininfor(email, Constants.LOGIN_FAIL, "用户已停用,请联系管理员"); + throw new ServiceException("对不起,您的账号:" + email + " 已停用"); } passwordService.validate(user, password); - recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功"); + recordLogService.recordLogininfor(email, Constants.LOGIN_SUCCESS, "登录成功"); return userInfo; } diff --git a/src/main/java/com/four/auth/service/SysPasswordService.java b/src/main/java/com/four/auth/service/SysPasswordService.java index 6c0bc04..c3f09df 100644 --- a/src/main/java/com/four/auth/service/SysPasswordService.java +++ b/src/main/java/com/four/auth/service/SysPasswordService.java @@ -12,7 +12,7 @@ import com.four.system.api.domain.SysUser; /** * 登录密码方法 - * + * * @author ruoyi */ @Component @@ -30,7 +30,7 @@ public class SysPasswordService /** * 登录账户密码错误次数缓存键名 - * + * * @param username 用户名 * @return 缓存键key */ @@ -41,9 +41,9 @@ public class SysPasswordService public void validate(SysUser user, String password) { - String username = user.getUserName(); + String userEmail = user.getEmail(); - Integer retryCount = redisService.getCacheObject(getCacheKey(username)); + Integer retryCount = redisService.getCacheObject(getCacheKey(userEmail)); if (retryCount == null) { @@ -53,20 +53,20 @@ public class SysPasswordService if (retryCount >= Integer.valueOf(maxRetryCount).intValue()) { String errMsg = String.format("密码输入错误%s次,帐户锁定%s分钟", maxRetryCount, lockTime); - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL,errMsg); + recordLogService.recordLogininfor(userEmail, Constants.LOGIN_FAIL,errMsg); throw new ServiceException(errMsg); } if (!matches(user, password)) { retryCount = retryCount + 1; - recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount)); - redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES); + recordLogService.recordLogininfor(userEmail, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount)); + redisService.setCacheObject(getCacheKey(userEmail), retryCount, lockTime, TimeUnit.MINUTES); throw new ServiceException("用户不存在/密码错误"); } else { - clearLoginRecordCache(username); + clearLoginRecordCache(userEmail); } } diff --git a/src/main/java/com/four/auth/service/SysRecordLogService.java b/src/main/java/com/four/auth/service/SysRecordLogService.java index 84d81b3..35cb3aa 100644 --- a/src/main/java/com/four/auth/service/SysRecordLogService.java +++ b/src/main/java/com/four/auth/service/SysRecordLogService.java @@ -11,7 +11,7 @@ import com.four.system.api.domain.SysLogininfor; /** * 记录日志方法 - * + * * @author ruoyi */ @Component @@ -22,16 +22,16 @@ public class SysRecordLogService /** * 记录登录信息 - * - * @param username 用户名 + * + * @param email 用户名 * @param status 状态 * @param message 消息内容 * @return */ - public void recordLogininfor(String username, String status, String message) + public void recordLogininfor(String email, String status, String message) { SysLogininfor logininfor = new SysLogininfor(); - logininfor.setUserName(username); + logininfor.setUserName(email); logininfor.setIpaddr(IpUtils.getIpAddr()); logininfor.setMsg(message); // 日志状态 diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index bdb32ed..6edd55d 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -1,9 +1,9 @@ # Tomcat -server: +server: port: 9200 # Spring -spring: +spring: application: # 应用名称 name: four-auth @@ -15,9 +15,11 @@ spring: discovery: # 服务注册地址 server-addr: 101.34.252.165:8848 + namespace: xiaoxu config: # 配置中心地址 server-addr: 101.34.252.165:8848 + namespace: xiaoxu # 配置文件格式 file-extension: yml # 共享配置