自己生成token token

2021-10-18 10:57:29 字數 1506 閱讀 3122

token是服務端生成的一串字串,以作客戶端進行請求的乙個令牌,當第一次登入後,伺服器生成乙個token便將此token返回給客戶端,以後客戶端只需帶上這個token前來請求資料即可,無需再次帶上使用者名稱和密碼。

token的身份驗證:

使用基於 token 的身份驗證方法,在服務端不需要儲存使用者的登入記錄。流程是這樣的:

客戶端使用使用者名稱跟密碼請求登入

服務端收到請求,去驗證使用者名稱與密碼

驗證成功後,服務端會簽發乙個 token,再把這個 token 傳送給客戶端

客戶端收到 token 以後可以把它儲存起來,比如放在 cookie 裡或者 local storage 裡

客戶端每次向服務端請求資源的時候需要帶著服務端簽發的 token

服務端收到請求,然後去驗證客戶端請求裡面帶著的 token,如果驗證成功,就向客戶端返回請求的資料

token的優勢

1.無狀態、可擴充套件

在客戶端儲存的tokens是無狀態的,並且能夠被擴充套件。基於這種無狀態和不儲存session資訊,負載負載均衡器能夠將使用者資訊從乙個服務傳到其他伺服器上。如果我們將已驗證的使用者的資訊儲存在session中,則每次請求都需要使用者向已驗證的伺服器傳送驗證資訊(稱為session親和性)。使用者量大時,可能會造成 一些擁堵。但是不要著急。使用tokens之後這些問題都迎刃而解,因為tokens自己hold住了使用者的驗證資訊。

2.安全性

請求中傳送token而不再是傳送cookie能夠防止csrf(跨站請求偽造)。即使在客戶端使用cookie儲存token,cookie也僅僅是乙個儲存機制而不是用於認證。不將資訊儲存在session中,讓我們少了對session操作。token是有時效的,一段時間之後使用者需要重新驗證。我們也不一定需要等到token自動失效,token有撤回的操作,通過token revocataion可以使乙個特定的token或是一組有相同認證的token無效。

3.可擴充套件性

tokens能夠建立與其它程式共享許可權的程式。例如,能將乙個隨便的社交帳號和自己的大號(fackbook或是twitter)聯絡起來。當通過服務登入twitter(我們將這個過程buffer)時,我們可以將這些buffer附到twitter的資料流上(we are allowing buffer to post to our twitter stream)。使用tokens時,可以提供可選的許可權給第三方應用程式。當使用者想讓另乙個應用程式訪問它們的資料,我們可以通過建立自己的api,得出特殊許可權的tokens。

4.多平台跨域

我們提前先來談論一下cors(跨域資源共享),對應用程式和服務進行擴充套件的時候,需要介入各種各種的裝置和應用程式。只要使用者有乙個通過了驗證的token,資料和資源就能夠在任何域上被請求到。access-control-allow-origin: *

學習路線 這裡起點的開始!

生成自己的 tclsh

最近因工作需要,開始學習tcl指令碼,這是一種命令式的指令碼語言,非常的簡單,所有操作都是 命令 引數 引數 引數 這樣來執行的。在看到用c c 來擴充套件tcl時,培訓教程裡提到使用tcl庫來生成自己的tclsh,下面講解具體的做法。tcl本身是用c實現的,可以看成是c庫,官方 為 要把tcl當c...

1 為什麼要使用token,token是什麼?

官方回答 token 是在服務端產生的。如果前端使用使用者名稱 密碼向服務端請求認證,服務端認證成功,那麼在服務端會返回 token 給前端。前端可以在每次請求的時候帶上 token 證明自己的合法地位。我自己理解 token就相當於客戶端登入的賬號的唯一標識,在做一些資料請求的時候,後台會要求在請...

生成 呼叫自己的靜態庫lib

打包靜態庫lib的主要作用在於 方便下次調 zhuang 用 bi 防止修改實現檔案cpp帶來不好的影響,所以封裝一下 靜態庫dll類似 首先新建vs專案,選擇專案屬性 生成靜態庫 lib 接著新建.h和.cpp檔案 打包.h pragma once class 計算 打包.cpp include ...