細講前端設置cookie, 儲存用戶登錄信息


引言

我們都知道如果想做一個用戶登錄並使瀏覽器保存其登錄信息,使得用戶下次再訪問網頁的時候無需再次進行登錄操作,我們需要用到 cookies , 今天我們就來講講前端如何給客戶端設置 cookie

正文

cookie 只有在服務環境下,才能設置,所以如果要嘗試練習設置cookie的話,可以使用webstorm編輯器, 它內部自帶服務環境,如果用別的編輯器的小伙伴的話,先自己搭一個簡單的服務環境哦~

一、設置cookie

設置 cookie 其實很簡單,只需要這樣一行代碼

<script>
    document.cookie = 'name=張三'
</script>

我們來看看瀏覽器上 cookie 的信息, 可以看到圖上顯示該cookie到期時間就是會話結束,即關閉瀏覽器 cookie 清除,這是因為我們在設置cookie時,只設置了 cookie的值,可沒設置到期時間。
在這里插入圖片描述

但是我們知道 cookie 是用來保存用戶的登錄信息的, 我們不能讓 cookie 一直在瀏覽器上存在,需要給 cookie 設置一個到期時間, 接下來我們來看這樣一段代碼

<script>
    let data = new Date().getTime()   //先將此時的時間轉化為毫秒
    let new_data = new Date(data + 7*24*60*60*1000)  //將過期時間設置為7天后
    // toUTCString() 是將時間根據世界時轉換為字符串
    document.cookie = 'name=張三;' + 'expires=' + new_data.toUTCString()
</script>

我們來看一下設置了過期時間后的cookie 是一個什么樣的情況
在這里插入圖片描述
明顯可以看到,此時瀏覽器上的 cookie 有了一個過期時間, 所以我們再一次重啟瀏覽器, 這個 cookie 還是存在的

注意:這里補充一點,我們如果想要設置多條 cookie , 我們必須一條一條設置,不能批量設置,例如如果要設置兩條cookie的話:

<script>
    let data = new Date().getTime()   //先將此時的時間轉化為毫秒
    let new_data = new Date(data + 7*24*60*60*1000)  //將過期時間設置為7天后
    //設置第一條 cookie
    document.cookie = 'name=張三;' + 'expires=' + new_data.toUTCString()
    //設置第二條 cookie
    document.cookie = 'age=19;' + 'expires=' + new_data.toUTCString()
</script>

二、查看cookie

那么我們如何查看瀏覽器上的cookie呢?這就非常簡單了

<script>

    console.log(document.cookie)
    
</script>

可以看到返回的是一串字符串, 每個cookie由分號隔開
在這里插入圖片描述
如果我們想要獲取cookie中某個單獨的 cookie,我們可以用正則進行匹配

<script>
    // name=張三 ; age=19
    
    let re = new RegExp("\s?" + "name" + "=([^;]+)(;|$)")
    console.log(document.cookie.match(re)[1])

</script>

我們來看一下輸出的值:
在這里插入圖片描述
這樣就得到了我們想要查詢的單個cookie值

三、刪除cookie

設置cookie是設置了一個cookie值並給它一個過期時間,這樣 cookie才不會因為關閉瀏覽器而立馬失效。所以刪除 cookie 我們只需要給該cookie設置一個比現在時間還早的時間讓cookie過期。

<script>
    let data = new Date().getTime()   //先將此時的時間轉化為毫秒
    let old_data = new Date(data - 24*60*60*1000) //將過期時間設為24小時前
    document.cookie = 'name=張三;' + 'expires=' + old_data.toUTCString()
</script>

我們只需要給我們需要刪除的 cookie 設置一個過期時間為比現在的時間還早的時間,就可以刪除這個cookie
在這里插入圖片描述
刪除后重新打開網頁,我們可以看到 名稱為 name 的 cookie 已經被刪除了

四、封裝cookie操作

操作cookie有這么多方法, 我們對他們進行封裝, 方便我們使用他們。

  • 封裝設置cookie的函數
<script>
   
	 //設置cookie
	 function setCookies(obj, limitTime) {
	     let data = new Date( new Date().getTime() + limitTime*24*60*60*1000 ).toUTCString()
	
	     for(let i in obj) {
	         document.cookie = i + '=' + obj[i] + ';expires=' + data
	     }
	
	 }
    
</script>

讓我們來使用一下setCookies函數

// 第一個參數為對象,用鍵值對的形式傳入我們想設置的cookie名和值
// 第二個參數為過期時間,單位為天
setCookies({
	name: '張三',
    age: 19,
    like: '羽毛球'
 }, 7)
  • 封裝查看cookie函數
//查看cookie
	function searchCookie(cookieName) {
	    let re = new RegExp("\s?" + cookieName + "=([^;]+)(;|$)")
	    return document.cookie.match(re)[1]
	}

讓我們來使用一下 searchCookie 函數

// 該函數只有一個參數,即我們需要查詢的cookie名稱,然后返回一個值
let cookieValue = searchCookie(name)
console.log(cookieValue)

// 張三
  • 刪除cookie
//刪除cookie
	function removeCookies(cookieList) {
	    let data = new Date(new Date().getTime() - 24*60*60*1000).toUTCString()
	    for(let i in cookieList) {
	        document.cookie = cookieList[i] + '= ;' + 'expires=' + data
	    }
	}

讓我們來使用一下 removeCookies 函數

//該函數只有一個參數,傳入一個數組,每個元素為我們想要刪除的cookie名
removeCookies(['name', 'age'])

結束語

好了,前端設置cookie的簡單實用就講到這里了, 看完的小伙伴可以趕緊自己動手試一試啦, 不要一看就會,一做就廢哦~ 我們下個文章再見吧~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM