Java TokenProcessor令牌校驗(yàn)工具類(lèi)
關(guān)于TokenProcessor令牌校驗(yàn)工具類(lèi)廢話(huà)不多說(shuō)了,直接給大家貼代碼了,一切內(nèi)容就在下面一段代碼中,具體代碼詳情如下所示:
public class TokenProcessor {
private long privious;// 上次生成表單標(biāo)識(shí)號(hào)得時(shí)間值
private static TokenProcessor instance = new TokenProcessor();
public static String FORM_TOKEN_KEY = "FORM_TOKEN_KEY";
private TokenProcessor() {
}
public static TokenProcessor getInstance() {
return instance;
}
/**
* 驗(yàn)證請(qǐng)求中得標(biāo)識(shí)號(hào)是否有效,如果請(qǐng)求中的表單標(biāo)識(shí)與當(dāng)前用戶(hù)session中的相同,返回結(jié)果true=
*/
public synchronized boolean isTokenValid(HttpServletRequest request) {
// 為避免session對(duì)象不存在時(shí)候創(chuàng)建Session對(duì)象
HttpSession session = request.getSession(false);
if (session == null) {
return false;
}
String saved = (String) session.getAttribute(FORM_TOKEN_KEY);
if (saved == null) {
return false;
}
String token = (String) request.getParameter(FORM_TOKEN_KEY);
if (token == null) {
return false;
}
return saved.equals(token);
}
/**
* 驗(yàn)證請(qǐng)求中得標(biāo)識(shí)號(hào)是否有效,如果請(qǐng)求中的表單標(biāo)識(shí)與當(dāng)前用戶(hù)session中的相同,返回結(jié)果true=
*/
public synchronized boolean isTokenValid(HttpServletRequest request,String token) {
// 未避免session對(duì)象不存在時(shí)候創(chuàng)建Session對(duì)象
HttpSession session = request.getSession(false);
if (session == null) {
return false;
}
String saved = (String) session.getAttribute(FORM_TOKEN_KEY);
if (saved == null) {
return false;
}
if (token == null) {
return false;
}
return saved.equals(token);
}
/**
* 清除存儲(chǔ)在當(dāng)前用戶(hù)session中的表單標(biāo)識(shí)號(hào)
*/
public synchronized void reset(HttpServletRequest request) {
HttpSession session = request.getSession(false);
if (session == null) {
return;
}
session.removeAttribute(FORM_TOKEN_KEY);
}
/**
* 產(chǎn)生表單標(biāo)識(shí)號(hào)并將之保存在當(dāng)前用戶(hù)得session中
*/
public synchronized void saveToken(HttpServletRequest request) {
HttpSession session = request.getSession();
try {
byte id[] = session.getId().getBytes();
long current = System.currentTimeMillis();
if (current == privious) {
current++;
}
privious = current;
byte now[] = String.valueOf(current).getBytes();
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(id);
md.update(now);
String token = toHex(md.digest());
session.setAttribute(FORM_TOKEN_KEY, token);
} catch (NoSuchAlgorithmException e) {
}
}
/**
* 將一個(gè)字節(jié)數(shù)轉(zhuǎn)換成十六進(jìn)制得字符串
*/
public String toHex(byte buffer[]) {
StringBuffer sb = new StringBuffer(buffer.length * 2);
for (int i = 0; i < buffer.length; i++) {
sb.append(Character.forDigit((buffer[i] & 0x60) >> 4, 16));
sb.append(Character.forDigit(buffer[i] & 0x0f, 16));
}
return sb.toString();
}
}
以上所述是小編給大家介紹的Java TokenProcessor令牌校驗(yàn)工具類(lèi),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Java Swing JList列表框的實(shí)現(xiàn)
這篇文章主要介紹了Java Swing JList列表框的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Spring 實(shí)現(xiàn)自定義監(jiān)聽(tīng)器案例
這篇文章主要介紹了Spring 實(shí)現(xiàn)自定義監(jiān)聽(tīng)器案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
java編程之基于SpringBoot框架實(shí)現(xiàn)掃碼登錄
本文將介紹基于SpringBoot + Vue + Android實(shí)現(xiàn)的掃碼登錄demo的總體思路,文中附含詳細(xì)示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
SpringCloud之監(jiān)控?cái)?shù)據(jù)聚合Turbine的實(shí)現(xiàn)
這篇文章主要介紹了SpringCloud之監(jiān)控?cái)?shù)據(jù)聚合Turbine的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
以Java代碼的方式總結(jié)幾個(gè)典型的內(nèi)存溢出案例
作為程序員,多多少少都會(huì)遇到一些內(nèi)存溢出的場(chǎng)景,如果你還沒(méi)遇到,說(shuō)明你工作的年限可能比較短,或者你根本就是個(gè)假程序員!哈哈,開(kāi)個(gè)玩笑.今天分享給大家Java內(nèi)存溢出的相關(guān)案例,希望大家在日常工作中,盡量避免寫(xiě)這些low水平的代碼,需要的朋友可以參考下2021-06-06
SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測(cè)試的操作詳解
這篇文章主要介紹了SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測(cè)試的操作步驟,文中通過(guò)代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03
json如何解析混合數(shù)組對(duì)象到實(shí)體類(lèi)的list集合里去
這篇文章主要介紹了json解析混合數(shù)組對(duì)象到實(shí)體類(lèi)的list集合里去的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
java單鏈表實(shí)現(xiàn)書(shū)籍管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java單鏈表實(shí)現(xiàn)書(shū)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11

