Commit ad91f294 authored by zhouxudong's avatar zhouxudong

七天过期

parent 1e8587ab
...@@ -25,20 +25,29 @@ public class CurrentUserInterceptor implements AsyncHandlerInterceptor { ...@@ -25,20 +25,29 @@ public class CurrentUserInterceptor implements AsyncHandlerInterceptor {
throws Exception { throws Exception {
// 从header中获取权限请求头 // 从header中获取权限请求头
String authToken = request.getHeader(Constants.TOKEN_HEADER); String authToken = request.getHeader(Constants.TOKEN_HEADER);
if(StringUtils.isBlank(authToken)){ if (StringUtils.isBlank(authToken)) {
throw new AuthException("未授权,请重新登录"); throw new AuthException("未授权,请重新登录");
} }
String token = authToken.substring("Bearer".length() + 1).trim(); String token = authToken.substring("Bearer".length() + 1).trim();
JwtInfo jwtUser = JwtTokenUtil.getJwtUser(token); JwtInfo jwtUser = JwtTokenUtil.getJwtUser(token);
Object redisToken = RedisUtil.get(RedisConstants.token + jwtUser.getPhone()); Object redisToken = RedisUtil.get(RedisConstants.token + jwtUser.getPhone());
if(ObjectUtils.isEmpty(redisToken)||!token.equals(redisToken)){ if (ObjectUtils.isEmpty(redisToken) || !token.equals(redisToken)) {
throw new AuthException("当前会话失效,请重新登录"); throw new AuthException("当前会话失效,请重新登录");
} }
//判断是否续期 // 判断是否续期
Long expire = RedisUtil.getExpire(RedisConstants.token + jwtUser.getPhone()); Long expire = RedisUtil.getExpire(RedisConstants.token + jwtUser.getPhone());
if(expire<Constants.addTime){ if (expire < Constants.addTime) {
RedisUtil.set(RedisConstants.token + jwtUser.getPhone(), token, Constants.expireTime, TimeUnit.SECONDS); Object result = RedisUtil.get(RedisConstants.seventoken + jwtUser.getPhone());
RedisUtil.set(
RedisConstants.token + jwtUser.getPhone(),
token,
(!ObjectUtils.isEmpty(result) && Boolean.parseBoolean(result.toString()))
? Constants.sevenTime
: Constants.expireTime,
TimeUnit.SECONDS);
} }
// 根据token信息,生成当前登录用户信息的设置,存放容器threadlocal // 根据token信息,生成当前登录用户信息的设置,存放容器threadlocal
BaseContextHandler.setCurrentUserInfo(jwtUser); BaseContextHandler.setCurrentUserInfo(jwtUser);
......
...@@ -129,6 +129,8 @@ public class Constants { ...@@ -129,6 +129,8 @@ public class Constants {
public static final int INTERVAL_TIME =4*60; public static final int INTERVAL_TIME =4*60;
//token 过期时间 //token 过期时间
public static Long expireTime = 86400L; public static Long expireTime = 86400L;
//7天免登录
public static Long sevenTime = 604800L;
//token 续期时间 12小时 //token 续期时间 12小时
public static Long addTime = 43200L; public static Long addTime = 43200L;
......
...@@ -10,6 +10,8 @@ public class RedisConstants { ...@@ -10,6 +10,8 @@ public class RedisConstants {
//------------------redis key-------------------------- //------------------redis key--------------------------
public static final String token="Token:"; public static final String token="Token:";
//是否7天免登录
public static final String seventoken="Seven_Token:";
//手机验证码 规则: 手机验证码:验证码类型:手机号 //手机验证码 规则: 手机验证码:验证码类型:手机号
public static final String MSG_KEY="phone:message:"; public static final String MSG_KEY="phone:message:";
//用户查看数据详情 使用额度 map存储: 格式: key phone + ":" + type value //用户查看数据详情 使用额度 map存储: 格式: key phone + ":" + type value
......
...@@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lyy.user.config.LyyConfig; import com.lyy.user.config.LyyConfig;
import com.lyy.user.config.exception.ServiceException; import com.lyy.user.config.exception.ServiceException;
import com.lyy.user.config.other.BaseContextHandler; import com.lyy.user.config.other.BaseContextHandler;
import com.lyy.user.constant.Constants; import com.lyy.user.constant.Constants;
...@@ -108,11 +107,22 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs ...@@ -108,11 +107,22 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
RedisUtil.set( RedisUtil.set(
RedisConstants.token + sysUserInfo.getPhonenumber(), RedisConstants.token + sysUserInfo.getPhonenumber(),
token, token,
Constants.expireTime, (!ObjectUtils.isEmpty(loginVo.getStatus()) && loginVo.getStatus())
? Constants.sevenTime
: Constants.expireTime,
TimeUnit.SECONDS); TimeUnit.SECONDS);
//将用户基本信息一起返回 //是否开启7天免登录
UserInfoVo userInfoVo =new UserInfoVo() RedisUtil.set(
RedisConstants.seventoken + sysUserInfo.getPhonenumber(),
!ObjectUtils.isEmpty(loginVo.getStatus()) && loginVo.getStatus(),
(!ObjectUtils.isEmpty(loginVo.getStatus()) && loginVo.getStatus())
? Constants.sevenTime
: Constants.expireTime,
TimeUnit.SECONDS);
// 将用户基本信息一起返回
UserInfoVo userInfoVo =
new UserInfoVo()
.setUserId(sysUserInfo.getUserId()) .setUserId(sysUserInfo.getUserId())
.setPhone(StringUtils.overlay(sysUserInfo.getPhonenumber(), "****", 3, 7)) .setPhone(StringUtils.overlay(sysUserInfo.getPhonenumber(), "****", 3, 7))
.setToken(token); .setToken(token);
...@@ -144,14 +154,27 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs ...@@ -144,14 +154,27 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
throw new ServiceException(MsgConstants.codeError); throw new ServiceException(MsgConstants.codeError);
} }
String token = JwtTokenUtil.createToken(sysUserInfo, null); String token = JwtTokenUtil.createToken(sysUserInfo, null);
RedisUtil.set( RedisUtil.set(
RedisConstants.token + sysUserInfo.getPhonenumber(), RedisConstants.token + sysUserInfo.getPhonenumber(),
token, token,
Constants.expireTime, (!ObjectUtils.isEmpty(phoneLoginVo.getStatus()) && phoneLoginVo.getStatus())
? Constants.sevenTime
: Constants.expireTime,
TimeUnit.SECONDS); TimeUnit.SECONDS);
//将用户基本信息一起返回 //是否开启7天免登录
UserInfoVo userInfoVo =new UserInfoVo() RedisUtil.set(
RedisConstants.seventoken + sysUserInfo.getPhonenumber(),
!ObjectUtils.isEmpty(phoneLoginVo.getStatus()) && phoneLoginVo.getStatus(),
(!ObjectUtils.isEmpty(phoneLoginVo.getStatus()) && phoneLoginVo.getStatus())
? Constants.sevenTime
: Constants.expireTime,
TimeUnit.SECONDS);
// 将用户基本信息一起返回
UserInfoVo userInfoVo =
new UserInfoVo()
.setUserId(sysUserInfo.getUserId()) .setUserId(sysUserInfo.getUserId())
.setPhone(StringUtils.overlay(sysUserInfo.getPhonenumber(), "****", 3, 7)) .setPhone(StringUtils.overlay(sysUserInfo.getPhonenumber(), "****", 3, 7))
.setToken(token); .setToken(token);
...@@ -202,7 +225,7 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs ...@@ -202,7 +225,7 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
*/ */
@Override @Override
public boolean sendMsg(SendPhoneVo sendPhoneVo) { public boolean sendMsg(SendPhoneVo sendPhoneVo) {
if(SendMsgTypeEnum.UPDATE_PASSWORD.getCode().equals(sendPhoneVo.getType())){ if (SendMsgTypeEnum.UPDATE_PASSWORD.getCode().equals(sendPhoneVo.getType())) {
JwtInfo currentUserInfo = BaseContextHandler.getCurrentUserInfo(); JwtInfo currentUserInfo = BaseContextHandler.getCurrentUserInfo();
String phone = currentUserInfo.getPhone(); String phone = currentUserInfo.getPhone();
sendPhoneVo.setPhone(phone); sendPhoneVo.setPhone(phone);
...@@ -221,8 +244,8 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs ...@@ -221,8 +244,8 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
String limitKey = RedisConstants.LIMIT_SMS + sendPhoneVo.getPhone(); String limitKey = RedisConstants.LIMIT_SMS + sendPhoneVo.getPhone();
boolean limitResult = RedisUtil.rateLimit(limitKey, intervalTime, limitSms); boolean limitResult = RedisUtil.rateLimit(limitKey, intervalTime, limitSms);
if(!limitResult){ if (!limitResult) {
throw new ServiceException(String.format(MsgConstants.sms,limitSms)); throw new ServiceException(String.format(MsgConstants.sms, limitSms));
} }
int randomInt = RandomUtil.randomInt(100000, 999999); int randomInt = RandomUtil.randomInt(100000, 999999);
...@@ -337,7 +360,6 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs ...@@ -337,7 +360,6 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
return this.updateById(sysUserInfo); return this.updateById(sysUserInfo);
} }
/** /**
* @description: 修改密码 * @description: 修改密码
* @date: 2023/11/23 10:21 * @date: 2023/11/23 10:21
...@@ -363,8 +385,8 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs ...@@ -363,8 +385,8 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
throw new ServiceException(MsgConstants.codeError); throw new ServiceException(MsgConstants.codeError);
} }
String newPassword = String newPassword =
DigestUtils.md5DigestAsHex( DigestUtils.md5DigestAsHex(
(updateVo.getPassword() + lyyConfig.getPasswordSalt()).getBytes()); (updateVo.getPassword() + lyyConfig.getPasswordSalt()).getBytes());
sysUserInfo.setPassword(newPassword); sysUserInfo.setPassword(newPassword);
return this.updateById(sysUserInfo); return this.updateById(sysUserInfo);
} }
...@@ -372,7 +394,7 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs ...@@ -372,7 +394,7 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
@Override @Override
public UserInfoVo detail() { public UserInfoVo detail() {
JwtInfo jwtUser = BaseContextHandler.getCurrentUserInfo(); JwtInfo jwtUser = BaseContextHandler.getCurrentUserInfo();
UserInfoVo userInfoVo = BeanUtil.copyProperties(jwtUser,UserInfoVo.class); UserInfoVo userInfoVo = BeanUtil.copyProperties(jwtUser, UserInfoVo.class);
userInfoVo.setPhone(StringUtils.overlay(jwtUser.getPhone(), "****", 3, 7)); userInfoVo.setPhone(StringUtils.overlay(jwtUser.getPhone(), "****", 3, 7));
return userInfoVo; return userInfoVo;
} }
......
...@@ -38,4 +38,6 @@ public class LoginVo { ...@@ -38,4 +38,6 @@ public class LoginVo {
// @Pattern(regexp = "^(?=.*[a-zA-Z])(?=.*\\\\d)(?=.*[@$!%*#?&])[A-Za-z\\\\d@$!%*#?&]{6,20}$", message = "密码长度必须大于等于6位,小于等于20") // @Pattern(regexp = "^(?=.*[a-zA-Z])(?=.*\\\\d)(?=.*[@$!%*#?&])[A-Za-z\\\\d@$!%*#?&]{6,20}$", message = "密码长度必须大于等于6位,小于等于20")
@ApiModelProperty(value = "密码",required = true) @ApiModelProperty(value = "密码",required = true)
private String password; private String password;
@ApiModelProperty(value = "是否开启7天免登录")
private Boolean status;
} }
...@@ -30,4 +30,6 @@ public class PhoneLoginVo { ...@@ -30,4 +30,6 @@ public class PhoneLoginVo {
@NotEmpty(message ="验证码不能为空") @NotEmpty(message ="验证码不能为空")
@ApiModelProperty(value = "验证码",required = true) @ApiModelProperty(value = "验证码",required = true)
private String code; private String code;
@ApiModelProperty(value = "是否开启7天免登录")
private Boolean status;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment