java清除token,java清除redis緩存

本文目錄一覽:

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-hant/n/227453.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 16:29
下一篇 2024-12-09 16:30

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論