mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-09-23 12:33:36 +08:00
v1.8.0更新
This commit is contained in:
@@ -3,6 +3,7 @@ package cn.dev33.satoken.dao;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
|
||||
@@ -21,18 +22,28 @@ public class SaTokenDaoRedis implements SaTokenDao {
|
||||
* string专用
|
||||
*/
|
||||
@Autowired
|
||||
StringRedisTemplate stringRedisTemplate;
|
||||
public StringRedisTemplate stringRedisTemplate;
|
||||
|
||||
/**
|
||||
* SaSession专用
|
||||
*/
|
||||
RedisTemplate<String, SaSession> redisTemplate;
|
||||
public RedisTemplate<String, SaSession> sessionRedisTemplate;
|
||||
@Autowired
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
public void setRedisTemplate(RedisTemplate redisTemplate) {
|
||||
redisTemplate.setKeySerializer(new StringRedisSerializer());
|
||||
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
|
||||
this.redisTemplate = redisTemplate;
|
||||
public void setSessionRedisTemplate(RedisConnectionFactory connectionFactory) {
|
||||
// 指定相应的序列化方案
|
||||
StringRedisSerializer keySerializer = new StringRedisSerializer();
|
||||
JdkSerializationRedisSerializer valueSerializer = new JdkSerializationRedisSerializer();
|
||||
// 构建RedisTemplate
|
||||
RedisTemplate<String, SaSession> template = new RedisTemplate<String, SaSession>();
|
||||
template.setConnectionFactory(connectionFactory);
|
||||
template.setKeySerializer(keySerializer);
|
||||
template.setHashKeySerializer(keySerializer);
|
||||
template.setValueSerializer(valueSerializer);
|
||||
template.setHashValueSerializer(valueSerializer);
|
||||
template.afterPropertiesSet();
|
||||
if(this.sessionRedisTemplate == null) {
|
||||
this.sessionRedisTemplate = template;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -58,7 +69,7 @@ public class SaTokenDaoRedis implements SaTokenDao {
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据key获取value,如果没有,则返回空
|
||||
* 修改指定key-value键值对 (过期时间取原来的值)
|
||||
*/
|
||||
@Override
|
||||
public void updateValue(String key, String value) {
|
||||
@@ -70,7 +81,7 @@ public class SaTokenDaoRedis implements SaTokenDao {
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据key获取value,如果没有,则返回空
|
||||
* 删除一个指定的key
|
||||
*/
|
||||
@Override
|
||||
public void deleteKey(String key) {
|
||||
@@ -84,6 +95,15 @@ public class SaTokenDaoRedis implements SaTokenDao {
|
||||
public long getTimeout(String key) {
|
||||
return stringRedisTemplate.getExpire(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改指定key的剩余存活时间 (单位: 秒)
|
||||
*/
|
||||
@Override
|
||||
public void updateTimeout(String key, long timeout) {
|
||||
stringRedisTemplate.expire(key, timeout, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@@ -91,7 +111,7 @@ public class SaTokenDaoRedis implements SaTokenDao {
|
||||
*/
|
||||
@Override
|
||||
public SaSession getSession(String sessionId) {
|
||||
return redisTemplate.opsForValue().get(sessionId);
|
||||
return sessionRedisTemplate.opsForValue().get(sessionId);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -101,9 +121,9 @@ public class SaTokenDaoRedis implements SaTokenDao {
|
||||
public void saveSession(SaSession session, long timeout) {
|
||||
// 判断是否为永不过期
|
||||
if(timeout == SaTokenDao.NEVER_EXPIRE) {
|
||||
redisTemplate.opsForValue().set(session.getId(), session);
|
||||
sessionRedisTemplate.opsForValue().set(session.getId(), session);
|
||||
} else {
|
||||
redisTemplate.opsForValue().set(session.getId(), session, timeout, TimeUnit.SECONDS);
|
||||
sessionRedisTemplate.opsForValue().set(session.getId(), session, timeout, TimeUnit.SECONDS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,7 +144,7 @@ public class SaTokenDaoRedis implements SaTokenDao {
|
||||
*/
|
||||
@Override
|
||||
public void deleteSession(String sessionId) {
|
||||
redisTemplate.delete(sessionId);
|
||||
sessionRedisTemplate.delete(sessionId);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -132,7 +152,15 @@ public class SaTokenDaoRedis implements SaTokenDao {
|
||||
*/
|
||||
@Override
|
||||
public long getSessionTimeout(String sessionId) {
|
||||
return redisTemplate.getExpire(sessionId);
|
||||
return sessionRedisTemplate.getExpire(sessionId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改指定SaSession的剩余存活时间 (单位: 秒)
|
||||
*/
|
||||
@Override
|
||||
public void updateSessionTimeout(String sessionId, long timeout) {
|
||||
sessionRedisTemplate.expire(sessionId, timeout, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user