From 12b2cd17a612e6121f84dff5167387be15166eea Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Wed, 12 Feb 2025 17:53:34 +0800 Subject: [PATCH] cust auth --- .../com/bonus/system/api/model/LoginUser.java | 23 ++++++++++++++ .../auth/controller/TokenController.java | 15 +++++++++- .../CustPhonePasswordLoginStrategy.java | 2 +- .../common/security/service/TokenService.java | 30 +++++++++++++++++++ .../system/controller/SysUserController.java | 9 +++--- .../resources/mapper/system/SysUserMapper.xml | 16 +++------- 6 files changed, 77 insertions(+), 18 deletions(-) diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/model/LoginUser.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/model/LoginUser.java index e61f1d2..1c5bf48 100644 --- a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/model/LoginUser.java +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/model/LoginUser.java @@ -3,6 +3,7 @@ package com.bonus.system.api.model; import java.io.Serializable; import java.util.Set; import com.bonus.system.api.domain.SysUser; +import io.swagger.annotations.ApiModelProperty; /** * 用户信息 @@ -63,6 +64,12 @@ public class LoginUser implements Serializable */ private SysUser sysUser; + @ApiModelProperty("过期时间") + private Long expireIn; + + @ApiModelProperty("是否登录") + private boolean isLogin; + public String getToken() { return token; @@ -160,4 +167,20 @@ public class LoginUser implements Serializable { this.sysUser = sysUser; } + + public Long getExpireIn() { + return expireIn; + } + + public void setExpireIn(Long expireIn) { + this.expireIn = expireIn; + } + + public boolean isLogin() { + return isLogin; + } + + public void setLogin(boolean login) { + isLogin = login; + } } diff --git a/bonus-auth/src/main/java/com/bonus/auth/controller/TokenController.java b/bonus-auth/src/main/java/com/bonus/auth/controller/TokenController.java index 625a9e7..0082d94 100644 --- a/bonus-auth/src/main/java/com/bonus/auth/controller/TokenController.java +++ b/bonus-auth/src/main/java/com/bonus/auth/controller/TokenController.java @@ -11,6 +11,7 @@ import com.bonus.common.core.domain.R; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.JwtUtils; import com.bonus.common.core.utils.StringUtils; +import com.bonus.common.core.utils.encryption.Sm4Utils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.redis.service.RedisService; import com.bonus.common.security.auth.AuthUtil; @@ -31,6 +32,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.Collection; +import java.util.Map; import java.util.Set; /** @@ -147,8 +149,19 @@ public class TokenController { LoginUser login = strategy.login(form.getUsername(), form.getPassword()); logService.saveLogin(form.getUsername(), "登录", "登录成功", null, "成功"); - return R.ok(tokenService.createToken(login)); + if (LoginType.CUST_PHONE_PASSWORD.equals(form.getLoginType()) || LoginType.CUST_PHONE_OPT.equals(form.getLoginType())) { + Map map = tokenService.createCustToken(login); + login.setToken((String) map.get("access_token")); + login.setExpireIn((Long) map.get("expires_in")); + login.setLogin((boolean) map.get("isLogin")); + login.getSysUser().setPhonenumber(Sm4Utils.custDecrypt(login.getSysUser().getPhonenumber())); + login.getSysUser().setCustName(Sm4Utils.custDecrypt(login.getSysUser().getCustName())); + System.out.println(SecurityUtils.getLoginUser()); + return R.ok(login); + } else { + return R.ok(tokenService.createToken(login)); + } } /** diff --git a/bonus-auth/src/main/java/com/bonus/auth/service/CustPhonePasswordLoginStrategy.java b/bonus-auth/src/main/java/com/bonus/auth/service/CustPhonePasswordLoginStrategy.java index a4efd52..56e5116 100644 --- a/bonus-auth/src/main/java/com/bonus/auth/service/CustPhonePasswordLoginStrategy.java +++ b/bonus-auth/src/main/java/com/bonus/auth/service/CustPhonePasswordLoginStrategy.java @@ -40,7 +40,7 @@ public class CustPhonePasswordLoginStrategy implements LoginStrategy { passwordValidatorService.validateUserResult(phone, userResult); //获取用户信息 LoginUser userInfo = userResult.getData(); - SysUser user = userInfo.getSysUser(); + //SysUser user = userInfo.getSysUser(); //校验用户审批状态 //passwordValidatorService.validateApprovalStatus(user.getUserName(), user); // 处理IP校验 diff --git a/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/TokenService.java b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/TokenService.java index cea20f8..1c3c50e 100644 --- a/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/TokenService.java +++ b/bonus-common/bonus-common-security/src/main/java/com/bonus/common/security/service/TokenService.java @@ -94,6 +94,36 @@ public class TokenService { return rspMap; } + /** + * 创建客户令牌 + */ + public Map createCustToken(LoginUser loginUser) { + // 检查并删除已有的token + delExistingToken(loginUser.getCustId()); + String token = IdUtils.fastUUID(); + Long custId = loginUser.getCustId(); + String userName = loginUser.getSysUser().getCustName(); + loginUser.setToken(token); + loginUser.setCustId(custId); + loginUser.getSysUser().setCustName(userName); + loginUser.setIpaddr(IpUtils.getIpAddr()); + refreshToken(loginUser); + // Jwt存储信息 + Map claimsMap = new HashMap(16); + claimsMap.put(SecurityConstants.USER_KEY, token); + claimsMap.put(SecurityConstants.DETAILS_USER_ID, custId); + claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName); + String accessToken = JwtUtils.createToken(claimsMap); + Map rspMap = new HashMap(16); + rspMap.put(ACCESS_TOKEN, accessToken); + rspMap.put("expires_in", EXPIRETIME); + rspMap.put("isLogin", isLogin(String.valueOf(custId))); + long tokenTime = getTokenTime(); + //对token进行存储 + redisService.setCacheObject(LOGIN_USER_KEY + custId, token, tokenTime, TimeUnit.MINUTES); + return rspMap; + } + public boolean isLogin(String userId) { String existingTokenKey = redisService.getCacheObject(LOGIN_USER_KEY + userId); return existingTokenKey != null; diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java index 9ef00b7..1586571 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java @@ -210,7 +210,7 @@ public class SysUserController extends BaseController { * 获取当前用户信息 */ @InnerAuth - @GetMapping("/CustInfoPhoto/{photoNumber}") + @GetMapping("/custInfoPhoto/{photoNumber}") public R custInfoPhotoNumber(@PathVariable("photoNumber") String photoNumber) { SysUser sysUser = userService.selectCustInfoByPhoneNumber(photoNumber); if (StringUtils.isNull(sysUser)) { @@ -224,11 +224,12 @@ public class SysUserController extends BaseController { //Set roles = permissionService.getRolePermission(sysUser); // 权限集合 //Set permissions = permissionService.getMenuPermission(sysUser); - LoginUser sysUserVo = new LoginUser(); - sysUserVo.setSysUser(sysUser); + LoginUser loginUser = new LoginUser(); + loginUser.setCustId(sysUser.getCustId()); + loginUser.setSysUser(sysUser); //sysUserVo.setRoles(roles); //sysUserVo.setPermissions(permissions); - return R.ok(sysUserVo); + return R.ok(loginUser); } /** diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysUserMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysUserMapper.xml index 8257670..60764e6 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -371,21 +371,13 @@