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}