001package io.jboot.components.cache.support;
002
003import com.jfinal.token.ITokenCache;
004import com.jfinal.token.Token;
005import io.jboot.Jboot;
006import io.jboot.components.cache.JbootCacheManager;
007
008import java.util.List;
009
010public class JbootTokenCache implements ITokenCache {
011
012    static final String CACHE_NAME = "jboot_tokens";
013
014    public JbootTokenCache() {
015        JbootCacheManager.me().getCache().addThreadCacheNamePrefixIngore(CACHE_NAME);
016    }
017
018    @Override
019    public void put(Token token) {
020        Jboot.getCache().put(CACHE_NAME, token.getId(), token, (int) ((token.getExpirationTime() - System.currentTimeMillis()) / 1000));
021    }
022
023    @Override
024    public void remove(Token token) {
025        Jboot.getCache().remove(CACHE_NAME, token.getId());
026    }
027
028    @Override
029    public boolean contains(Token token) {
030        return Jboot.getCache().get(CACHE_NAME, token.getId()) != null;
031    }
032
033    @Override
034    public List<Token> getAll() {
035        // 此处直接 return null 即可
036        // 因为 JFinal 调用此方法的目的是为了去清除过期的 Token
037        // 但是,通过 Jboot 缓存,配置上过期时间时,其在过期的时候自动进行清除了,不再需要 JFinal 进行再次清除
038        return null;
039    }
040}