cookie VS token 許可權認證

2021-09-19 03:46:29 字數 1237 閱讀 4002

cookie 登入是有狀態的,服務端維護乙個 session 客戶端維護乙個 cookie,cookie 只保留 sessionid 服務端要儲存並跟蹤所有活動的 session 如下:

輸入使用者名稱密碼登陸。

伺服器拿到身份並驗證後生成乙個 session 存到資料庫。

把 sessionid 返回給客戶端存成乙個 cookie 儲存 sessionid。

隨後的請求會攜帶這個包含 sessionid 的 cookie。

伺服器拿著 sessionid 找到對應的 session 認證使用者是否有對應許可權啊。

登出後,服務端銷毀 session 客戶端銷毀 cookie。

token 的認證方式是無狀態的,服務端不儲存登陸狀態,也不關心哪些客戶端簽發了 token ,每個請求都會攜帶 token 通常在 header 中,也可以出現在 body 和 query 如下:

輸入使用者名稱密碼登陸。

伺服器拿到身份並驗證後簽發乙個 token。

客戶端拿到 token 並存起來,好多地方都可以存。

客戶端傳送的每乙個請求都要攜帶 token,好多方式可以攜帶。

伺服器接收請求後拿到 token 並解析,拿解析的結果進行許可權認證(token中可能已經攜帶許可權資訊,能被正常解析的 token 被認為是合法機構簽發的)。

登出後,在客戶端銷毀 token 即可。

無狀態,token 是無狀態的,伺服器端不需要保留任何資訊,每個 token 都會包含所有需要的使用者資訊。伺服器端可以只負責簽發和解析 token 解放了部分伺服器資源,讓伺服器更單純的提供介面。

跨伺服器,無狀態優勢在此。伺服器如果做了負載均衡之類的,你兩條請求不一定去同乙個伺服器,著如果用伺服器維護乙個 session 的話就顯得有些棘手了,乙個伺服器和乙個客戶端對應,另乙個伺服器不一定認得你啊,不對是一定不認得你啊,當然這個問題也不難解決。

可以攜帶其他資訊,比如攜帶具體許可權資訊之類的,省的還要去查庫。

效能,解 token 可比查庫要省事兒的多。

跨域,請求需要跨域的介面的時候 cookie 就力不從心了,不同域就不會攜帶 cookie ,不攜帶 cookie 伺服器也不知道是哪個 session 啊,token 在此優勢明顯。

配合移動端,cookie 是瀏覽器端的玩意兒,移動端應用想使用 cookie 還得折騰一下,token 就方便得多。token 讓伺服器端單純提供 api 服務,適用性更廣。

csrf,如果 token 不存放在 cookie 中,防止了跨站請求偽造帶來的安全性風險。

許可權的概述 系統許可權 物件許可權

許可權 1許可權是資料庫執行某種操作的能力 2許可權的分類 1 系統許可權 在系統級控制資料庫的訪問和使用機制。2 物件許可權 是指在模式物件上控制訪問和使用的機制 系統許可權 1系統許可權是針對使用者來設定的,使用者必須被授予相應的系統許可權,才能連線到資料庫中執行某種操作 2系統許可權包括建立會...

許可權設計(功能許可權與資料許可權)

許可權設計的最終目標就是定義每個使用者可以在系統中做哪些事情。當我們談到許可權的時候,一般可以分為 功能許可權 資料許可權和字段許可權 功能許可權 使用者具有哪些權利,比如特定單據的增 刪 改 查 審批 反審批等等 一般按照乙個人在組織內的工作內容來劃分 比如乙個單據往往有錄入人和審批人,錄入人具有...

許可權管理 chattr許可權

1 chattr 許可權 對包括root在內的所有使用者都起作用 新增chattr許可權 chattr i abc 檢視chattr許可權 lsattr abc 取消chattr許可權 chattr i abc i 針對檔案 則完全不能修改該檔案,針對目錄 只能修改目錄下檔案的資料,但不允許建立和刪...