本文目錄一覽:
java中 TOKEN的概念
token 你可以把他當做一個令牌,當第一次訪問時設置一個令牌保存,一般我們保存在session中,當啟動令牌時,那麼就去檢測令牌是否一致,然後銷毀令牌或者重置令牌,這樣第二次再用次令牌訪問時,就會不一致了,直接提示重複提交了
請教Java 登錄token的用法
jsp生成表單時,
1 在表單中插入一個隱藏input字段,該字段就是保存在頁面端的token字符串,同時把該字符串存入session中。
2 用戶提交表單時,會一併提交該隱藏的token字符串。
3 在服務器端,查看下是否在session中含有與該token字符串相等的字符串。
3 .1 如果有,那麼表明是第一次提交該表單,然後刪除存放於session端的token字符串,再做正常業務邏輯流程;(注意此處已經將session端的token字符串 刪除)
3.2 如果沒有,那麼表示該表單被重複提交,做非正常流程處理,可以警告提示也可以什麼也不做(第一次提交後session端的token字符串已刪除)
js清除所有網站token
本地存儲對比:
sessionStorage,關閉窗口就被清除;
localStorage,一直存在直到手動刪除;
cookie,設置有效期,可以直接實現標題的需求
今天不想多說話,直接貼上代碼:
//判斷是否支持 比如瀏覽器開啟了隱私模式var isCookie = () = { return navigator.cookieEnabled;};//存儲function setCookie(cname, cvalue, exdays = 0) { cvalue = encodeURIComponent(JSON.stringify(cvalue)); if (exdays 0) { var d = new Date().getTime() + exdays * 24 * 3600 * 1000 + 8 * 3600 * 1000; var expires = “expires=” + new Date(d).toUTCString(); document.cookie = cname + “=” + cvalue + “;” + expires + “;path=/”; } else { document.cookie = cname + “=” + cvalue + “;” + “;path=/”; }}//獲取function getCookie(cname) { var name = cname + “=”; var ca = document.cookie.split(“;”); for (var i = 0; i ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ” “) { c = c.substring(1); } if (c.indexOf(name) == 0) { let d = c.substring(name.length, c.length); return JSON.parse(decodeURIComponent(d)); } } return “”;}//獲取 通過正則// function getCookie(name) {// var arr,// reg = new RegExp(“(^| )” + name + “=([^;]*)(;|$)”);// if ((arr = document.cookie.match(reg))) {// return JSON.parse(decodeURIComponent(arr[2]));// } else {// return null;// }// }//刪除function deleteCookie(name) { var date = new Date(); date.setTime(date.getTime() – 1); var delValue = getCookie(name); if (delValue) { document.cookie = name + “=” + delValue + “;expires=” + date.toGMTString(); }}
使用示例:
//定義keyconst tk = “tk2020”;const uk = “uk2020”;//保存setCookie(tk, “14332239527007001”, 0);setCookie(uk, { id: 1, name: “以氣御碼” }, 0);//獲取let token = getCookie(tk);let user = getCookie(uk);console.log(token);console.log(user);
當使用setCookie時,傳0或不傳,表示關閉瀏覽器後就被清除,截圖預覽:

當登錄的信息存儲為這種形式,可以實現關閉瀏覽器,就清除登錄信息。也可以再配合登錄有效期,總不能「只要不關瀏覽器,就不退出登錄了」。
文檔:
MDN Cookie()W3c Cookie()菜鳥教程 Cookie()
登錄時對於token的處理
在前後端完全分離的情況下,Vue項目中實現token驗證大致思路如下:
1、用戶輸入賬號密碼,前端調後端的登陸接口,發送用戶名和密碼,
2、後端收到請求,驗證用戶名和密碼,驗證通過後(即登錄成功),後端返回token給前端;
3、前端拿到token,將token存儲到localStorage和vuex中,並跳轉路由頁面;
4、前端每次跳轉路由,都要判斷 localStroage 中有無 token ,沒有就跳轉到登錄頁面,有則跳轉到對應路由頁面( 通過router.beforeEach((to, from, next)={…..}))
5、每次調後端接口,都要在請求頭中加上token;
6、後端判斷請求頭中有無token,有token,就拿到token並驗證token,驗證成功就返回數據,驗證失敗(例如:token過期)就返回編碼401(編碼由前台和後台約定好),請求頭中沒有token也返回編碼401;
7、如果前端拿到狀態碼為401,則清除token信息並跳轉到登錄頁面,並彈框提示用戶當前缺少token或者token已失效,請重新登錄;
一、調登錄接口成功,在回調函數中將token存儲到localStorage和vuex中
login.vue
store文件夾下的index.js
二、路由導航守衛
main.js
三、請求頭加token,如果前端拿到狀態碼為401,就清除token信息並跳轉到登錄頁面
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/227453.html