双token实现token超时策略示例
import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;
import java.util.Date;
import org.apache.commons.lang.time.FastDateFormat;
/**
*
* @author Charles
*/
public class TokenUtils {
private static final String privateKey = "fdas34ljfr好sja@#8$%dfkl;js&4*daklfjsdl;akfjsa342";
public static String getToken(String password, String date) {
return Hashing.md5().newHasher().
putString(password, Charsets.UTF_8).
putString(privateKey, Charsets.UTF_8).
putString(date, Charsets.UTF_8).hash().toString();
}
public static String getToken(String password, Date date) {
return Hashing.md5().newHasher().
putString(password, Charsets.UTF_8).
putString(privateKey, Charsets.UTF_8).
putString(getDate(date), Charsets.UTF_8).hash().toString();
}
public static String getToken(String password) {
return Hashing.md5().newHasher().
putString(password, Charsets.UTF_8).
putString(privateKey, Charsets.UTF_8).putString(getDate(), Charsets.UTF_8).hash().toString();
}
public static boolean validToken(String token, String password) {
String confirm = getToken(password);
if (confirm.equals(token)) {
return true;
} else {
return false;
}
}
public static String getDate() {
Date date = new Date(System.currentTimeMillis());
return FastDateFormat.getInstance("yyyyMMddHH").format(date);
}
public static String getDate(Date now) {
return FastDateFormat.getInstance("yyyyMMddHH").format(now);
}
public static String getNextHour(Date now) {
Date date = new Date(now.getTime()+60*60*1000);
return FastDateFormat.getInstance("yyyyMMddHH").format(date);
}
}
相关文章
WebSocket 中使用 @Autowired 注入对应为null的解决方案
SpringBoot集成WebSocket时,会遇到service对象为null的情况,原因是Spring默认为单例模式与WebSocket的多对象模式相冲突,当客户端与服务器端建立连接时,会创建新的WebSocket对象,本文给大家介绍WebSocket 中使用 @Autowired 注入对应为null的问题,感兴趣的朋友一起看看吧2024-10-10


最新评论