Compare commits

...
This repository has been archived on 2025-03-01. You can view files and clone it, but cannot push or open issues or pull requests.

2 Commits

Author SHA1 Message Date
sxu 45c1291aa5 security loginuser 2025-02-13 12:28:32 +08:00
sxu f9cc1fb291 security loginuser 2025-02-13 10:47:53 +08:00
4 changed files with 28 additions and 27 deletions

View File

@ -14,6 +14,7 @@ import com.bonus.auth.form.LoginBody;
import com.bonus.auth.mapper.AuthCustCasualMapper;
import com.bonus.auth.service.*;
import com.bonus.domain.SmsCodeVerifyDTO;
import com.bonus.system.api.model.LoginUser;
import com.bonus.utils.AesEncryptUtil;
import com.bonus.utils.id.Id;
import com.bonus.utils.SM4EncryptUtils;
@ -101,15 +102,13 @@ public class TokenController {
if (keys.size() >= concurrency){
return R.fail("当前系统用户并发数超过系统配置,请稍后再试");
}
CustInfoAppIdLoginVO loginUser = custLogin(form);
LoginUser loginUser = custLogin(form);
Map<String, Object> map = tokenService.createToken(loginUser);
loginUser.setToken((String) map.get(CustTokenService.ACCESS_TOKEN));
loginUser.setExpireIn((Long) map.get(CustTokenService.EXPIRES_IN));
loginUser.setLogin((boolean) map.get(CustTokenService.IS_LOGIN));
return R.ok(loginUser);
}
private CustInfoAppIdLoginVO custLogin(LoginBody content) {
private LoginUser custLogin(LoginBody content) {
// if (CharSequenceUtil.isNotBlank(content.getMobile())) {
// content.setMobile(AesEncryptUtil.aesDecode(content.getMobile()));
// }
@ -136,14 +135,13 @@ public class TokenController {
}
custInfo.setIdCard(SM4EncryptUtils.sm4Encryptbyconfig(content.getIdCard()));
}
CustInfoAppIdLoginVO result = this.custInfoMapper.selectLoginInfo(custInfo);
LoginUser result = this.custInfoMapper.selectLoginInfo(custInfo);
if (Objects.isNull(result)) {
throw new ServiceException("未找到用户");
} else {
result.setCustIdStr(result.getCustId().toString());
if (CustLoginTypeEnum.getNeedPasswordLoginTypeToMap().containsKey(content.getLoginType())) {
content.setPassword(AesEncryptUtil.aesDecode(content.getPassword()));
if (!encoder.matches(content.getPassword(), result.getPwd())) {
if (!encoder.matches(content.getPassword(), result.getPassword())) {
throw new ServiceException("密码错误");
}
}
@ -158,7 +156,7 @@ public class TokenController {
System.out.println(flag);
}
public CustInfoAppIdLoginVO addOrUpdateCustCasual(Integer sourceType, CustInfoAppIdLoginVO result) {
public LoginUser addOrUpdateCustCasual(Integer sourceType, LoginUser result) {
Long custId = result.getCustId();
CustCasual custCasual = this.authCustCasualMapper.selectCustCasualByCustId(custId, sourceType, DelFlagEnum.DEL_FALSE.key());
String openid;
@ -166,9 +164,9 @@ public class TokenController {
CustCasual insertCasual = new CustCasual();
openid = IdUtil.simpleUUID();
insertCasual.setCasualId(Id.next()); //TODO, NPE
insertCasual.setCasualName(SM4EncryptUtils.sm4Decrypt(result.getCustName()));
insertCasual.setCasualName(SM4EncryptUtils.sm4Decrypt(result.getNickName()));
insertCasual.setCustId(result.getCustId());
insertCasual.setMobile(SM4EncryptUtils.sm4Decrypt(result.getMobile()));
insertCasual.setMobile(SM4EncryptUtils.sm4Decrypt(result.getPhonenumber()));
insertCasual.setOpenid(openid);
insertCasual.setSourceType(sourceType);
this.authCustCasualMapper.addCustCasual(insertCasual);
@ -180,9 +178,9 @@ public class TokenController {
}
}
result.setOpenid(openid);
result.setCustName(SM4EncryptUtils.sm4Decrypt(result.getCustName()));
result.setMobile(SM4EncryptUtils.sm4Decrypt(result.getMobile()));
result.setOpenId(openid);
result.setNickName(SM4EncryptUtils.sm4Decrypt(result.getNickName()));
result.setPhonenumber(SM4EncryptUtils.sm4Decrypt(result.getPhonenumber()));
return result;
}
@ -239,7 +237,7 @@ public class TokenController {
@PostMapping("refresh")
public R<?> refresh(HttpServletRequest request) {
try {
CustInfoAppIdLoginVO loginUser = tokenService.getLoginUser(request);
LoginUser loginUser = tokenService.getLoginUser(request);
if (StringUtils.isNotNull(loginUser)) {
tokenService.refreshToken(loginUser);
return R.ok();

View File

@ -2,10 +2,11 @@ package com.bonus.auth.mapper;
import com.bonus.domain.CustInfo;
import com.bonus.domain.CustInfoAppIdLoginVO;
import com.bonus.system.api.model.LoginUser;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AuthCustInfoMapper {
CustInfoAppIdLoginVO selectLoginInfo(CustInfo custInfo);
LoginUser selectLoginInfo(CustInfo custInfo);
}

View File

@ -11,6 +11,8 @@ import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.config.SystemConfig;
import com.bonus.system.api.RemoteUserService;
import com.bonus.domain.CustInfoAppIdLoginVO;
import com.bonus.system.api.domain.SysUser;
import com.bonus.system.api.model.LoginUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -67,15 +69,15 @@ public class CustTokenService {
/**
* 创建令牌
*/
public Map<String, Object> createToken(CustInfoAppIdLoginVO loginUser) {
public Map<String, Object> createToken(LoginUser loginUser) {
// 检查并删除已有的token
delExistingToken(loginUser.getCustId());
String token = IdUtils.fastUUID();
Long custId = loginUser.getCustId();
String userName = loginUser.getCustName();
String userName = loginUser.getNickName();
loginUser.setToken(token);
loginUser.setCustId(custId);
loginUser.setCustName(userName);
loginUser.setNickName(userName);
loginUser.setIpaddr(IpUtils.getIpAddr());
refreshToken(loginUser);
// Jwt存储信息
@ -119,7 +121,7 @@ public class CustTokenService {
*
* @return 用户信息
*/
public CustInfoAppIdLoginVO getLoginUser() {
public LoginUser getLoginUser() {
return getLoginUser(ServletUtils.getRequest());
}
@ -128,7 +130,7 @@ public class CustTokenService {
*
* @return 用户信息
*/
public CustInfoAppIdLoginVO getLoginUser(HttpServletRequest request) {
public LoginUser getLoginUser(HttpServletRequest request) {
// 获取请求携带的令牌
String token = SecurityUtils.getToken(request);
return getLoginUser(token);
@ -139,8 +141,8 @@ public class CustTokenService {
*
* @return 用户信息
*/
public CustInfoAppIdLoginVO getLoginUser(String token) {
CustInfoAppIdLoginVO user = null;
public LoginUser getLoginUser(String token) {
LoginUser user = null;
try {
if (StringUtils.isNotEmpty(token)) {
String userkey = JwtUtils.getUserKey(token);
@ -156,7 +158,7 @@ public class CustTokenService {
/**
* 设置用户身份信息
*/
public void setLoginUser(CustInfoAppIdLoginVO loginUser) {
public void setLoginUser(LoginUser loginUser) {
if (StringUtils.isNotNull(loginUser) && StringUtils.isNotEmpty(loginUser.getToken())) {
refreshToken(loginUser);
}
@ -177,7 +179,7 @@ public class CustTokenService {
*
* @param loginUser
*/
public void verifyToken(CustInfoAppIdLoginVO loginUser) {
public void verifyToken(LoginUser loginUser) {
long expireTime = loginUser.getExpireTime();
long currentTime = System.currentTimeMillis();
if (expireTime - currentTime <= MILLIS_MINUTE_TEN) {
@ -190,7 +192,7 @@ public class CustTokenService {
*
* @param loginUser 登录信息
*/
public void refreshToken(CustInfoAppIdLoginVO loginUser) {
public void refreshToken(LoginUser loginUser) {
long tokenTime = getTokenTime();
loginUser.setLoginTime(System.currentTimeMillis());
loginUser.setExpireTime(loginUser.getLoginTime() + tokenTime * MILLIS_MINUTE);

View File

@ -2,8 +2,8 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.bonus.auth.mapper.AuthCustInfoMapper">
<!--根据人员id集合获取人员信息-->
<select id="selectLoginInfo" resultType="com.bonus.domain.CustInfoAppIdLoginVO">
select cust_id, cust_name, cust_num, cust_photo_url, mobile, pwd
<select id="selectLoginInfo" resultType="com.bonus.system.api.model.LoginUser">
select cust_id as custId, open_id as openId, cust_name as nickName, cust_photo_url as photoUrl, mobile as phonenumber, pwd as password
from cust_info
<where>
cust_state = 1 and (psn_type != 999 or psn_type is null)