常用校验token加上二级缓存
This commit is contained in:
parent
0f25b9414e
commit
c69efa101f
|
@ -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>
|
|
@ -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("-", "");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue