1、清空本地缓存方法名优化;

2、增加oauth2设置过期时间方法,用expire替代set不用每次重新设内容
This commit is contained in:
gaoqr
2024-06-21 14:21:29 +08:00
parent 666cdb08c2
commit 04ac2c8d3c
5 changed files with 18 additions and 6 deletions
@@ -24,11 +24,11 @@ public interface SecurityFrameworkService {
boolean hasAnyPermissions(String... permissions); boolean hasAnyPermissions(String... permissions);
/** /**
* 清空本地缓存 * 清空本地权限缓存
* *
* @param * @param
*/ */
void invalidateAll(); void invalidateAllPermissionsCache();
/** /**
* 判断是否有角色 * 判断是否有角色
@@ -66,7 +66,7 @@ public class SecurityFrameworkServiceImpl implements SecurityFrameworkService {
} }
@Override @Override
public void invalidateAll() { public void invalidateAllPermissionsCache() {
hasAnyPermissionsCache.invalidateAll(); hasAnyPermissionsCache.invalidateAll();
} }
@@ -25,6 +25,6 @@ public class SystemPermissionRefreshRedisListener extends AbstractRedisSimpleMes
@Override @Override
public void onMessage(Message message, byte[] bytes) { public void onMessage(Message message, byte[] bytes) {
securityFrameworkService.invalidateAll(); securityFrameworkService.invalidateAllPermissionsCache();
} }
} }
@@ -52,6 +52,17 @@ public class OAuth2AccessTokenRedisDAO {
stringRedisTemplate.delete(redisKeys); stringRedisTemplate.delete(redisKeys);
} }
/**
* 设置过期时间
*
* @param accessToken 访问令牌
* @param timeout 过期时间
* @param unit 时间单位
*/
public void expire(String accessToken, long timeout, final TimeUnit unit) {
stringRedisTemplate.expire(formatKey(accessToken), timeout, unit);
}
private static String formatKey(String accessToken) { private static String formatKey(String accessToken) {
return String.format(RedisKeyConstants.OAUTH2_ACCESS_TOKEN, accessToken); return String.format(RedisKeyConstants.OAUTH2_ACCESS_TOKEN, accessToken);
} }
@@ -21,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception0; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception0;
import static com.cf.imes.framework.common.util.collection.CollectionUtils.convertSet; import static com.cf.imes.framework.common.util.collection.CollectionUtils.convertSet;
@@ -111,7 +112,7 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
if(accessTokenDO != null){ if(accessTokenDO != null){
// 有令牌的校验,代表有接口访问,延长令牌的过期时间(30分钟) // 有令牌的校验,代表有接口访问,延长令牌的过期时间(30分钟)
oauth2AccessTokenRedisDAO.set(accessTokenDO.setExpiresTime(LocalDateTime.now().plusSeconds(1800))); oauth2AccessTokenRedisDAO.expire(accessToken, 1800, TimeUnit.SECONDS);
} }
return accessTokenDO; return accessTokenDO;
} }
@@ -124,7 +125,7 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
} }
// if (DateUtils.isExpired(accessTokenDO.getExpiresTime())) { // if (DateUtils.isExpired(accessTokenDO.getExpiresTime())) {
// throw exception0(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "访问令牌已过期"); // throw exception0(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "访问令牌已过期");
// }
return accessTokenDO; return accessTokenDO;
} }