前端登錄鑒權詳解

1.cookie-session

1. cookie

cookie簡單來說就是瀏覽器客戶端在請求時會攜帶的一個字段數據,常用與保存當前用戶狀態并在請求時攜帶給服務端驗證。

2. session

session簡單來說就是服務單對于每一個用戶生成一個用戶會話標識session /session id,并返回給客戶端,客戶端在每次請求時攜帶這個會話標識就可以判斷當前用戶的會話狀態。

3. 鑒權原理

  1. 初次登錄時,服務端將當前用戶的登錄狀態生成一個session/session id
  2. 服務端將session id(sid)) 設置到cookie 中隨請求返回。
  3. 下次請求時瀏覽器自動攜帶當前域名下的cookie,服務端獲取到sid之后,根據sid的信息來匹配上對應的session,然后判斷該請求是否合法。

4. 缺點

  1. 不安全, sid保存到cookie容易被篡改
  2. 對移動端支持不優化,僅可在瀏覽器web應用中使用
  3. 依賴瀏覽器請求頭攜帶cookie,如果瀏覽器禁用cookie會造成該方案無法使用

2.token

1.token

token指的是由服務端生成的一個專門用于判斷用戶身份的令牌,客戶端可以攜帶這個令牌來獲取數據。這個token一般來說會存在時效性,過期即作廢,需要重新申請。因此這也衍生出了兩種不同的token。

2.token的分類

  1. Access token

用戶校驗用戶信息的token,在每次請求時發送給服務器

  1. Refresh token

用戶重新火球Access token,在Access token過期,服務器返回401時發送給服務器,服務器根據Refresh toekn的有效性重新簽發一份新的Access toekn返回給瀏覽器。

3.鑒權原理

  1. 初次登錄,服務器生成一份toekn并返回給客戶端
  2. 客戶端收到token后將其保存到瀏覽器本地,一般為localStorage
  3. 后續請求時客戶端在請求頭中攜帶token,一般為Authoration 字段
  4. 服務端判斷token是否有效,有效則正常請求,無效返回401

以下階段為使用Refresh token 場景下

  1. 如果使用Refresh toekn方案,此時客戶端接受到401 后,會攜帶Refresh toen再次請求服務器
  2. 服務器收到Refresh toekn后,根據其有效性自動重新簽發一份token并返回
  3. 瀏覽器接收到新token之后覆蓋本地token并重新發發送請求

Refresh token方案下, Refresh toekn是在初次登錄是和Access token一起生成并返回給客戶端客戶端

3.JWT

1.jwt(json web token)

jwt本質上就是token鑒權的一種實現方式,通過服務端臨時深成一個編碼的toekn字符串來返回給客戶端。

2.組成

jwt主要有三部分組成,分別是Header,Payload,Signature(簽名)

jwt是一段很長的字符串,有點號(.)分割為以上的三部分

  • Header一般包含token的類型,例如是JWT;加密使用的算法
  • Payload一般是保存用戶的一部分信息以及一些官方字段,包括iss(簽發人),exp(過期時間),nbf(生效時間)等等。
  • Sginature 一般是一個簽名,這個簽名是將一個密鑰通過Header里面的加密算法加密過后的字符串。密鑰保存再當前服務端。

3.鑒權原理和token一樣

4.單點登錄(SSO)

1.單點登錄介紹

所謂單點登錄,指的是在登錄了某一個系統之后,再去使用其子系統或相關系統是,可以自動獲取到用戶信息,不需要重復登錄的一種技術。單點登錄主要分為兩種類型,即同域名和不同域名

2.同域名單點登錄

1.前提條件

  • 兩個系統均使用cookie攜帶用戶信息(可以是cookie-session ,也可以是token)
  • 兩個系統的一級或者二級域名相同(同一個主域名)

2.鑒權原理

  1. 客戶端登錄系統1后,將其對應的cookie信息保存下來,并設置cookie的Domain字段為主域名
  2. 客戶端訪問系統2時,在發送請求時會自動攜帶上與當前系統主域名相同的cookie信息到服務端請求數據,此時服務端就可以獲取到用戶信息了。

3.不同域名下的單點登錄

1.CAS 中央授權系統

用于判斷用戶登錄狀態并為需要的系統簽發用戶登錄憑證

2.鑒權原理

  1. 用戶當訪問系統1時,發現用戶未登錄,調用CAS的登錄登錄模塊并跳轉至CAs的登錄界面
  2. 用戶在CAS上登陸之后,服務端生成一份TGC存放到session中,并生成一份ST授權信息,攜帶ST重定向系統1的頁面。將TGC寫入到當前中央授權系統的Domain下。
  3. 系統1在加載后獲取到ST,拿著ST向CAS校驗授權有效性,若授權有效則系統1將ST作為憑證參與后續請求會話。
  4. 此時再去訪問系統2,首先判斷用戶未登錄跳轉至CAS,攜帶Domain中的TGC發送請求判斷登陸狀態
  5. 判斷已登錄后跳轉至系統2的地址并附上ST憑證

5.OAuth 2.0(三方登錄)

1.OAuth

OAuth是一個開放的標注,允許第三方網站訪問提供商服務并獲取對應的用戶信息而無需再忍第三方網站單獨登錄

2.授權碼模式

  1. 客戶端點擊第三方登錄,發送請求
  2. 服務端收到請求之后,會重定向到授權器
  3. 授權服務器返回授權網站,判斷用戶是否登錄,登陸之后會詢問是否為這個網站授權
  4. 用戶同意后,會跳轉會原來的網站地址,并且攜帶一個授權碼
  5. 服務端拿到授權碼之后,通過授權碼向授權服務器發送請求獲取token
  6. 授權服務器將對應的token信息發送至當前服務端,服務端會把token返回給瀏覽器,在后續請求時都會攜帶

3.隱藏式模式

  1. 客戶端點擊第三方登錄直接重定向到授權頁面
  2. 授權成功后,在重定向到前端頁面時,直接攜帶一個token挑戰
  3. 跳轉成功后將token保存下來
  4. 每次請求用戶信息是直接攜帶token向授權服務器發送請求

6.掃碼登錄

1.掃碼登錄

掃碼登錄一般是使用一些移動端設備,為pc端授權登錄的場景

2.登錄原理

待掃碼階段

  1. pc端點擊掃碼登陸之后,向服務端請求一個獲取二維碼的請求
  2. 服務端接收請求后,生成一個uuid作為二維碼id并將uuid和pc設備信息關聯起來存儲到redis中,然后返回給pc端。
  3. pc端接收到二維碼id之后,通過canvas價格二維碼id渲染二維碼,等待移動端掃碼。并且開始輪詢查詢二維碼狀態,發現二維碼過期之后會提示。

已掃碼待確認階段

  1. 使用移動端設備掃碼,掃碼后會解析二維碼圖像并生成對應的id
  2. 移動端將對應的id發送給服務端,并查詢到pc登錄設備信息返回。并生成一個臨時token用于移動端確認
  3. 移動端彈出確認界面,并展示pc登錄的狀態,比如登錄時間,地點等等

已確認階段

  1. 移動端確認登錄,攜帶上一步獲取的臨時token發送到服務端
  2. 服務端驗證token有效性,通過驗證后簽發一個正式的token返回給PC端。
  3. Pc端獲取到token信息后,二維碼展示為已確認狀態,并跳轉至使用頁面完成登錄。

7.一鍵登錄

1.一鍵登錄

一鍵登錄指的是客戶端直接從用戶系統中獲取到對應的手機號,直接使用該手機號完成登錄。一般適用于原生應用或小程序應用

2.登錄原理

  1. 用戶點擊一鍵登錄
  2. 通過運營商SDK調用,喚起配置頁面,SDK會先發送手機號掩碼到運營商服務器,請求成功后跳轉至確認頁面,顯示出手機掩碼及運營商協議等供用戶確認。
  3. 同意授權登錄后,SDK會請求本次取號的token,成功后將token返回給客戶端
  4. 客戶端將取號token發送到服務器,服務器攜帶攜帶取號token調用運營商的一鍵登錄接口獲取用戶手機號,服務端使用手機號完成登錄流程,生成token返回給客戶端。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/95824.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/95824.shtml
英文地址,請注明出處:http://en.pswp.cn/web/95824.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從零實現 LLM(上):原理講透 + 最小可運行 GPT

引言 為什么要學習 LLM? 當你和 ChatGPT 對話時,它不僅能回答你的問題,還能續寫故事、記住上下文,甚至調整風格。你可能會想:它是怎么做到的? 答案就是:大語言模型(Large Languag…

浪潮科技Java開發面試題及參考答案(120道題-下)

如何給 MySQL 表添加索引?添加索引的語法是什么?添加索引時需要考慮哪些因素(如字段類型、查詢頻率、索引選擇性)? 給 MySQL 表添加索引需根據業務需求選擇合適的索引類型,不同類型的索引語法不同,同時需綜合評估字段特性、查詢模式等因素,避免無效或過度索引。 一、…

大數據畢業設計選題推薦-基于大數據的宮頸癌風險因素分析與可視化系統-Spark-Hadoop-Bigdata

?作者主頁:IT研究室? 個人簡介:曾從事計算機專業培訓教學,擅長Java、Python、微信小程序、Golang、安卓Android等項目實戰。接項目定制開發、代碼講解、答辯教學、文檔編寫、降重等。 ?文末獲取源碼? 精彩專欄推薦??? Java項目 Python…

【PyTorch實戰:Tensor變形】5、 PyTorch Tensor指南:從基礎操作到Autograd與GPU加速實戰

一、Tensor核心概念解析 1.1 什么是Tensor? Tensor是PyTorch中最基本的數據結構,也是深度學習框架的核心計算單元。我們可以將Tensor理解為多維數組的統一表示,它在PyTorch中的地位相當于NumPy中的ndarray,但具有兩個關鍵增強特性:GPU加速支持和自動求導能力。 1.2 為…

2025年我國具身智能產業鏈全景分析

一、具身智能產業概述與定義 1.1 具身智能的基本概念與內涵 具身智能(Embodied Intelligence)是指通過物理實體與環境進行交互的智能系統,其核心在于將感知、決策和執行緊密結合,使智能體能夠在動態環境中自主感知、學習和執行任務…

VMWare上搭建大數據集群

文章目錄1. 采用軟件較新版本2. 準備三臺虛擬機3. 搭建Hadoop集群3.1 在主節點上配置Hadoop3.1.1 編輯映射文件3.1.2 配置免密登錄3.1.3 配置JDK3.1.4 配置Hadoop3.2 從主節點分發到從節點3.3 格式化名稱節點3.4 啟動Hadoop集群3.5 使用Hadoop WebUI3.6 運行MR應用:…

小迪自用web筆記29

PHP刷新是點擊刷新之后原來的圖片替換掉,換成新的圖片。把inhoneJPG給替換掉如果這個圖片是由用戶可自定義輸入的話,可xss漏洞應用。因為這段代碼本質邏輯是點擊刷新之后。就執行update方法中的代碼,而這個方法中存儲的是。截取IMG&#xff0…

WPS--專業pj版

下載 下載鏈接 解壓后 安裝 默認安裝 激活 輸入解壓后文件中的激活碼

Android Framework智能座艙面試題

目錄 1.談一談你對binder機制的理解?它為什么是Android中最重要的IPC通信方式?與其他IPC(Socket、共享內存)通信方式相比有哪些優勢? 2.如果你需要新提供的車載硬件(比如:一個座椅震動馬達)提供系統級別支持應該怎么做? 3.你了解Android與QNX共存方案的實現方式嗎?他們…

[CISCN2019 華北賽區 Day1 Web1]Dropbox

TRY 首先上傳和刪除文件抓包,可以發現upload.php和delete.php,只允許上傳gif png jpg后綴的文件。但是上傳的文件并沒有辦法訪問,不過可以下載,抓包發現下載的時候請求體是文件名,嘗試能不能通過路徑穿越獲取源碼&…

網站管理后臺

這里套用的模板為 楓雨在線 在寶塔面板左側選擇菜單欄文件 在根目錄下找到www文件夾,點擊進入wwwroot文件夾,隨后能看到域名文件夾,里面有一下初始內容,可以全部刪掉,留下 .user.ini 文件 點擊上傳,將…

一款免費易用且打造的全功能媒體播放器

zyfun[zyplayer]是一款免費易用且打造的全功能媒體播放器, 致力于提供流暢、高效的跨平臺娛樂體驗。 注意:播放源請自行查詢,或者聯系博主。 下載:軟件下載 在線體驗可暫時使用:https://tv.snowytime.cn 密碼為123456 🎉 功能亮點…

【AI產品思路】AI 原型設計工具橫評:產品經理視角下的 v0、Bolt 與 Lovable

本文原創作者:姚瑞南 AI-agent 大模型運營專家/音樂人/野生穿搭model,先后任職于美團、獵聘等中大廠AI訓練專家和智能運營專家崗;多年人工智能行業智能產品運營及大模型落地經驗,擁有AI外呼方向國家專利與PMP項目管理證書。&#…

計算機視覺(九):圖像輪廓

在計算機視覺(Computer Vision, CV)中,圖像輪廓(Image Contour)是圖像中物體邊界的重要表現形式。它不僅能描述物體的形狀特征,還能為目標識別、目標檢測、圖像分割、場景理解、三維重建等任務提供重要依據…

ThinkPHP 6框架常見錯誤:htmlentities()函數參數類型問題解決

在ThinkPHP 6框架中,htmlentities() 函數是一個常用的PHP函數,用于將字符轉換為HTML實體。這個函數通常在輸出內容到瀏覽器時使用,以防止跨站腳本(XSS)攻擊。然而,在使用過程中可能會遇到參數類型問題。錯誤…

網絡通信 IO 模型學習總結基礎強化

網絡通信概念網絡通信因為要處理復雜的物理信號,錯誤處理等,所以采用了分層設計。為什么要采用分層設計?1. 每層可以獨立開發,測試和替換;2. 發生問題也可以快速定位到具體層次;3. 協議標準化,不…

【ComfyUI】深度 ControlNet 深度信息引導生成

今天給大家演示一個結合 ControlNet 深度信息的 ComfyUI 建筑可視化工作流。整個流程通過引入建筑專用的權重模型和深度控制網絡,使得生成的建筑圖像不僅具備高質量和超寫實的細節,還能精確遵循輸入圖片的結構特征。在這個案例中,模型加載、文…

Python數據可視化科技圖表繪制系列教程(六)

目錄 散點圖1 散點圖2 添加線性回歸線的散點圖 自定義點形狀的散點圖 不同樣式的散點圖 抖動散點圖 邊際圖 邊緣為直方圖的邊際圖 邊緣為箱線圖的邊際圖 曼哈頓圖 【聲明】:未經版權人書面許可,任何單位或個人不得以任何形式復制、發行、出租、…

spring AI 的簡單使用

1. 引入 Spring 官?推出的?個穩定版??智能(AI)集成框架. 旨在幫助 Java/Spring 開發者更便捷地在企業級應?中集成 AI 能? (如?語?模型、機器學習、向量數據庫、圖像?成等)。 它主要提供了以下功能: ? ?持主要的AI模型提供商, ?如 Anthropic、OpenAI、M…

圖像去霧:從暗通道先驗到可學習融合——一份可跑的 PyTorch 教程

一、為什么“去霧”依然是好課題? 真實需求大:手機拍照、自動駕駛、遙感、監控都要在惡劣天氣下成像。 數據集相對干凈:與通用目標檢測相比,去霧只有“有霧/無霧”一對圖像,標注成本低。 傳統與深度并存:…