雙token實(shí)現(xiàn)token超時(shí)策略示例
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);
}
}
相關(guān)文章
Java實(shí)現(xiàn)FTP服務(wù)器功能實(shí)例代碼
FTP(File Transfer Protocol 文件傳輸協(xié)議)是Internet 上用來(lái)傳送文件的協(xié)議,本文給大家分享Java實(shí)現(xiàn)FTP服務(wù)器功能實(shí)例代碼,對(duì)java實(shí)現(xiàn)ftp服務(wù)器相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-12-12
idea中創(chuàng)建jsp項(xiàng)目的詳細(xì)實(shí)戰(zhàn)步驟
才學(xué)javaWeb,以防自己忘記創(chuàng)建項(xiàng)目的過(guò)程,所以淺淺的記錄一下吧,下面這篇文章主要給大家介紹了關(guān)于idea中創(chuàng)建jsp項(xiàng)目的詳細(xì)步驟,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
WebSocket 中使用 @Autowired 注入對(duì)應(yīng)為null的解決方案
SpringBoot集成WebSocket時(shí),會(huì)遇到service對(duì)象為null的情況,原因是Spring默認(rèn)為單例模式與WebSocket的多對(duì)象模式相沖突,當(dāng)客戶(hù)端與服務(wù)器端建立連接時(shí),會(huì)創(chuàng)建新的WebSocket對(duì)象,本文給大家介紹WebSocket 中使用 @Autowired 注入對(duì)應(yīng)為null的問(wèn)題,感興趣的朋友一起看看吧2024-10-10
SpringBoot集成iText實(shí)現(xiàn)電子簽章功能
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何集成iText實(shí)現(xiàn)電子簽章功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10
idea解決程序包不存在報(bào)錯(cuò)的八種解決方法
這篇文章主要介紹了idea解決程序包不存在報(bào)錯(cuò)的八種解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-02-02
MyBatis將查詢(xún)出的兩列數(shù)據(jù)裝配成鍵值對(duì)的操作方法
這篇文章主要介紹了MyBatis將查詢(xún)出的兩列數(shù)據(jù)裝配成鍵值對(duì)的操作代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
java 代理模式及動(dòng)態(tài)代理機(jī)制深入分析
這篇文章主要介紹了java 代理模式及動(dòng)態(tài)代理機(jī)制深入分析的相關(guān)資料, 代理是一種常用的設(shè)計(jì)模式,其目的就是為其他對(duì)象提供一個(gè)代理以控制對(duì)某個(gè)對(duì)象的訪問(wèn),需要的朋友可以參考下2017-03-03

