常用校验token加上二级缓存

This commit is contained in:
wangliwen 2022-07-05 09:21:03 +08:00
parent 0f25b9414e
commit c69efa101f
2 changed files with 70 additions and 56 deletions

View File

@ -57,4 +57,13 @@
overflowToDisk="false"
memoryStoreEvictionPolicy="LRU"/>
<!-- getByToken缓存 -->
<cache name="getByToken"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="60"
timeToLiveSeconds="600"
overflowToDisk="true"
memoryStoreEvictionPolicy="LRU"/>
</ehcache>

View File

@ -4,6 +4,8 @@ import io.renren.common.service.impl.BaseServiceImpl;
import io.renren.dao.TokenDao;
import io.renren.entity.TokenEntity;
import io.renren.service.TokenService;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import java.util.Date;
@ -12,73 +14,76 @@ import java.util.UUID;
@Service
public class TokenServiceImpl extends BaseServiceImpl<TokenDao, TokenEntity> implements TokenService {
/**
* 12小时后过期
*/
private final static int EXPIRE = 3600 * 12;
private static final String getByTokenKey = "getByToken";
/**
* 12小时后过期
*/
private final static int EXPIRE = 3600 * 12;
@Override
public TokenEntity getByToken(String token) {
return baseDao.getByToken(token);
}
@Override
@Cacheable(value = getByTokenKey, key = "#p1")
public TokenEntity getByToken(String token) {
return baseDao.getByToken(token);
}
@Override
public TokenEntity createToken(Long userId) {
//当前时间
Date now = new Date();
//过期时间
Date expireTime = new Date(now.getTime() + EXPIRE * 1000);
@Override
@CacheEvict(key = getByTokenKey, allEntries = true)
public TokenEntity createToken(Long userId) {
//当前时间
Date now = new Date();
//过期时间
Date expireTime = new Date(now.getTime() + EXPIRE * 1000);
//用户token
String token;
//用户token
String token;
//判断是否生成过token
TokenEntity tokenEntity = baseDao.getByUserId(userId);
if(tokenEntity == null){
//生成一个token
token = generateToken();
//判断是否生成过token
TokenEntity tokenEntity = baseDao.getByUserId(userId);
if (tokenEntity == null) {
//生成一个token
token = generateToken();
tokenEntity = new TokenEntity();
tokenEntity.setUserId(userId);
tokenEntity.setToken(token);
tokenEntity.setUpdateDate(now);
tokenEntity.setExpireDate(expireTime);
tokenEntity = new TokenEntity();
tokenEntity.setUserId(userId);
tokenEntity.setToken(token);
tokenEntity.setUpdateDate(now);
tokenEntity.setExpireDate(expireTime);
//保存token
this.insert(tokenEntity);
}else{
//判断token是否过期
if(tokenEntity.getExpireDate().getTime() < System.currentTimeMillis()){
//token过期重新生成token
token = generateToken();
}else {
token = tokenEntity.getToken();
}
//保存token
this.insert(tokenEntity);
} else {
//判断token是否过期
if (tokenEntity.getExpireDate().getTime() < System.currentTimeMillis()) {
//token过期重新生成token
token = generateToken();
} else {
token = tokenEntity.getToken();
}
tokenEntity.setToken(token);
tokenEntity.setUpdateDate(now);
tokenEntity.setExpireDate(expireTime);
tokenEntity.setToken(token);
tokenEntity.setUpdateDate(now);
tokenEntity.setExpireDate(expireTime);
//更新token
this.updateById(tokenEntity);
}
//更新token
this.updateById(tokenEntity);
}
return tokenEntity;
}
return tokenEntity;
}
@Override
public void expireToken(Long userId){
Date now = new Date();
@Override
public void expireToken(Long userId) {
Date now = new Date();
TokenEntity tokenEntity = new TokenEntity();
tokenEntity.setUserId(userId);
tokenEntity.setUpdateDate(now);
tokenEntity.setExpireDate(now);
TokenEntity tokenEntity = new TokenEntity();
tokenEntity.setUserId(userId);
tokenEntity.setUpdateDate(now);
tokenEntity.setExpireDate(now);
this.updateById(tokenEntity);
}
this.updateById(tokenEntity);
}
private String generateToken(){
return UUID.randomUUID().toString().replace("-", "");
}
private String generateToken() {
return UUID.randomUUID().toString().replace("-", "");
}
}