91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Token機制

發布時間:2021-07-19 11:35:28 來源:億速云 閱讀:429 作者:chen 欄目:大數據

本篇內容主要講解“什么是Token機制”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“什么是Token機制”吧!

        互聯網發展到現在已經到了一個非常成熟的時代,所以不再是一個你寫一個靜態網站就可以進行瘋狂盈利的時代了。現在對產品有著很多的要求,健壯性,安全性這些都是必不可少的。前兩篇也說過了現在公司一般用戶登錄成功會給前端返回token,前端訪問接口請求數據需要攜帶token進行身份驗證。我們一直說token,那究竟什么是tokentoken其實就是一個令牌,是服務端生成的一串字符串,解析可以得到用戶信息。

        因為HTTP是一種無狀態協議,所以是沒辦法記住用戶的登錄狀態的。所以客戶端每次請求都需要驗證身份,最早的解決方案是:當用戶請求登錄成功,在服務端生成一條記錄,然后把記錄id發送給客戶端,客戶端收到以后把這個id存儲在cookie里,下次該用戶再次向服務端發送請求的時候,可以帶上這個cookie,這樣服務端會驗證一下cookie里的信息,看能不能在服務端這里找到對應的記錄,如果可以,說明用戶已經通過了身份驗證,就把用戶請求的數據返回給客戶端。其實這種方案就是利用session,id值其實就是sessionid。那我們既然可以使用session進行身份驗證,我們為什么還要選擇使用token呢?

    1.session是需要空間進行存儲的,如果是多服務器session需要同步信息,但是token在服務器是可以不需要存儲用戶信息的。

    2.token可以使用瀏覽器的localStorge等,APP也可以使用自帶數據庫存儲字符串。且不會出現cookies出現跨域問題。

    3.token可以用JWT來攜帶部分不太敏感的信息比如用戶ID等,服務器只要解密token即可使用部分信息。

        使用token驗證機制講完了,那我們需要知道我們使用token驗證的整個流程:

      1.當用戶登錄成功之后, 服務器端就會通過指定算法生成一個 token,過期時間48h,可以將token 存儲在redis,再將這個token值返回給客戶端;

       2.客戶端拿到 token 值之后,進行保存;

       3.當客戶端調用接口請求數據時,就會攜帶 token 值發送給服務器;

       4.服務器接收到客戶端的請求之后,會取出token值與保存在redis中的token值做對比。

        5.如果token對比成功,說明用戶處于登錄狀態,否則表示登錄狀態失效,需要用戶重新登陸。用戶每次重新登陸會刷新token的過期時間。

接下來我們用代碼來走一趟整個流程:

        首先我們實現登錄邏輯,這套沒什么好講的,可以去看看一篇文章:你不知道的前后端分離之交互(2)

什么是Token機制

用戶首次登錄去數據庫匹配賬號密碼,匹配成功會返回用戶唯一標識uid,account這些基本數據。接下來我們需要去使用指定算法生成一個token

什么是Token機制

我們通過用戶app_sid以及account生成一個簡單的token:TKN:3:Q:d:8zTEiTJEJ7dee:AOK_H5,然后去redis查詢以這個簡單token為鍵值的token是否存在。

什么是Token機制

什么是Token機制

如果用戶token已存在redis中,則刪除這個token。然后生成新的token

什么是Token機制

將新token存儲到redis中,一樣采用鍵名為簡單token,鍵值為最終生成的token。過期時間設置成48h

什么是Token機制

到這里我們生成token的操作就全部完善了。基本流程就是用戶登錄成功會以app_sidaccount先生成一個簡單token,去redis查詢該token是否存在。存在則刪除token,然后使用特定算法將簡單token轉化成最終的token存儲到redis。然后給前端返回token進行存儲。

什么是Token機制

可以看到我們成功將token返回給前端了。現在我們還需要一個驗證token的接口。因為我們直接將token存儲在redis中,所以接收到前端傳的token,我們可以直接去redis中查詢token是否存在,如果token存在,則代表用戶處于登錄狀態,給前端返回數據。否則登陸失敗,提示請先登錄。

什么是Token機制

        前端每次請求通用數據接口的時候,先驗證token的有效性。這樣整套下來我們就可以實現基于token的權限驗證。但是這套邏輯是有缺點的,因為我們使用token理論上服務端可以不進行存儲,直接指定加解密算法,我這里由于生成token使用的隨機算法,無法反向解密,所以只能存儲在redis中進行處理。其實我覺得更好的方案是直接設計加解密算法,服務端使用加密算法生成token返回給前端,前端每次請求通用數據接口攜帶token,服務端直接接收前端的token進行反向解密,如果解密成功則可以得到用戶的uid等基本信息,解密失敗則提示前端請先登錄。

到此,相信大家對“什么是Token機制”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

囊谦县| 台南市| 申扎县| 景德镇市| 嘉兴市| 玉门市| 衡阳市| 湘乡市| 吉木萨尔县| 三亚市| 万年县| 林西县| 财经| 临西县| 万安县| 阳曲县| 武平县| 壤塘县| 会泽县| 拉孜县| 改则县| 文安县| 镇江市| 保靖县| 普宁市| 奉新县| 沈阳市| 金昌市| 织金县| 洞口县| 迁安市| 黑水县| 竹溪县| 行唐县| 潼南县| 永清县| 望城县| 东乡| 肇源县| 阿坝县| 泸水县|