1.设置用户登录 Token 到期时间为租户对应权限到期时间
This commit is contained in:
@@ -1,38 +1,38 @@
|
||||
package com.yupi.springbootinit.Interceptor;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* 自定义拦截器(token续期 和 token定期刷新)
|
||||
*/
|
||||
public class TokenInterceptor implements HandlerInterceptor {
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
|
||||
response.setHeader( "Content-Security-Policy" , "default-src 'self'; script-src 'self'; frame-ancestors 'self'");
|
||||
response.setHeader("Access-Control-Allow-Origin", (request).getHeader("Origin"));
|
||||
response.setHeader("Access-Control-Allow-Credentials", "true");
|
||||
response.setHeader("Referrer-Policy","no-referrer");
|
||||
response.setContentType("application/json");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
// 登录校验 -- 拦截所有请求,只有登录后才可以访问
|
||||
StpUtil.checkLogin();
|
||||
String tokenValue = StpUtil.getTokenValue();
|
||||
StpUtil.renewTimeout(tokenValue,259200);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
||||
}
|
||||
}
|
||||
//package com.yupi.springbootinit.Interceptor;
|
||||
//
|
||||
//import cn.dev33.satoken.stp.StpUtil;
|
||||
//
|
||||
//import org.springframework.web.servlet.HandlerInterceptor;
|
||||
//import org.springframework.web.servlet.ModelAndView;
|
||||
//
|
||||
//import javax.servlet.http.HttpServletRequest;
|
||||
//import javax.servlet.http.HttpServletResponse;
|
||||
//
|
||||
///**
|
||||
// * 自定义拦截器(token续期 和 token定期刷新)
|
||||
// */
|
||||
//public class TokenInterceptor implements HandlerInterceptor {
|
||||
//
|
||||
// @Override
|
||||
// public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
|
||||
// response.setHeader( "Content-Security-Policy" , "default-src 'self'; script-src 'self'; frame-ancestors 'self'");
|
||||
// response.setHeader("Access-Control-Allow-Origin", (request).getHeader("Origin"));
|
||||
// response.setHeader("Access-Control-Allow-Credentials", "true");
|
||||
// response.setHeader("Referrer-Policy","no-referrer");
|
||||
// response.setContentType("application/json");
|
||||
// response.setCharacterEncoding("UTF-8");
|
||||
// // 登录校验 -- 拦截所有请求,只有登录后才可以访问
|
||||
// StpUtil.checkLogin();
|
||||
// String tokenValue = StpUtil.getTokenValue();
|
||||
// StpUtil.renewTimeout(tokenValue,259200);
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
||||
// }
|
||||
//}
|
||||
@@ -5,7 +5,6 @@ import cn.dev33.satoken.interceptor.SaInterceptor;
|
||||
import cn.dev33.satoken.router.SaHttpMethod;
|
||||
import cn.dev33.satoken.router.SaRouter;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import com.yupi.springbootinit.Interceptor.TokenInterceptor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -24,9 +23,9 @@ public class SaTokenConfigure implements WebMvcConfigurer {
|
||||
registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin()))
|
||||
.addPathPatterns("/**")
|
||||
.excludePathPatterns(getExcludePaths());
|
||||
registry.addInterceptor(new TokenInterceptor())
|
||||
.addPathPatterns("/**")
|
||||
.excludePathPatterns(getExcludePaths());
|
||||
// registry.addInterceptor(new TokenInterceptor())
|
||||
// .addPathPatterns("/**")
|
||||
// .excludePathPatterns(getExcludePaths());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -84,6 +86,20 @@ public class SystemTenant {
|
||||
@ApiModelProperty(value="过期时间")
|
||||
private Date expireTime;
|
||||
|
||||
/**
|
||||
* ai过期时间
|
||||
*/
|
||||
@TableField(value = "expire_time")
|
||||
@ApiModelProperty(value="ai过期时间")
|
||||
private Date aiExpireTime;
|
||||
|
||||
/**
|
||||
* 大哥过期时间
|
||||
*/
|
||||
@TableField(value = "expire_time")
|
||||
@ApiModelProperty(value="大哥过期时间")
|
||||
private Date brotherExpireTime;
|
||||
|
||||
/**
|
||||
* 账号数量
|
||||
*/
|
||||
|
||||
@@ -2,14 +2,18 @@ package com.yupi.springbootinit.service.impl;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.yupi.springbootinit.common.ErrorCode;
|
||||
import com.yupi.springbootinit.exception.BusinessException;
|
||||
import com.yupi.springbootinit.mapper.SystemTenantMapper;
|
||||
import com.yupi.springbootinit.model.dto.user.SystemUsersDTO;
|
||||
import com.yupi.springbootinit.model.entity.SystemTenant;
|
||||
import com.yupi.springbootinit.model.entity.SystemUsers;
|
||||
import com.yupi.springbootinit.model.enums.CommonStatusEnum;
|
||||
import com.yupi.springbootinit.model.enums.LoginSceneEnum;
|
||||
import com.yupi.springbootinit.model.vo.user.SystemUsersVO;
|
||||
import com.yupi.springbootinit.service.SystemUsersService;
|
||||
import com.yupi.springbootinit.utils.DateUtils;
|
||||
import com.yupi.springbootinit.utils.RedisUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -19,6 +23,8 @@ import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -52,6 +58,9 @@ public class LoginService {
|
||||
@Resource
|
||||
private RedisUtils redisUtils;
|
||||
|
||||
@Resource
|
||||
private SystemTenantMapper tenantMapper;
|
||||
|
||||
/**
|
||||
* 统一登录入口
|
||||
*
|
||||
@@ -85,9 +94,21 @@ public class LoginService {
|
||||
rabbitAdmin.declareBinding(binding);
|
||||
}
|
||||
}
|
||||
SystemTenant systemTenant = tenantMapper.selectById(user.getTenantId());
|
||||
|
||||
// 5. Sa-Token 登录
|
||||
StpUtil.login(user.getId(), scene.getSaMode());
|
||||
switch (scene) {
|
||||
case AI_CHAT:
|
||||
StpUtil.renewTimeout(DateUtils.dateBetween(systemTenant.getAiExpireTime(),DateUtil.date()));
|
||||
break;
|
||||
case HOST:
|
||||
StpUtil.renewTimeout(DateUtils.dateBetween(systemTenant.getExpireTime(),DateUtil.date()));
|
||||
break;
|
||||
case BIG_BROTHER:
|
||||
StpUtil.renewTimeout(DateUtils.dateBetween(systemTenant.getBrotherExpireTime(),DateUtil.date()));
|
||||
break;
|
||||
}
|
||||
|
||||
// 6. 封装返回数据
|
||||
SystemUsersVO vo = new SystemUsersVO();
|
||||
|
||||
17
src/main/java/com/yupi/springbootinit/utils/DateUtils.java
Normal file
17
src/main/java/com/yupi/springbootinit/utils/DateUtils.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package com.yupi.springbootinit.utils;
|
||||
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/9/16 16:31
|
||||
*/
|
||||
public class DateUtils {
|
||||
|
||||
public static Long dateBetween(Date date1, Date date2) {
|
||||
return DateUtil.between(date1, date2, DateUnit.SECOND);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user