.NET自定義認證雖然簡單,但好用

前言

有這樣一種場景,就是新項目已經集成了認證中心,或者是都用了統一的認證方式(比如現在常用的JWT),這樣對于項目之間的對接就顯得比較方便,至少在認證這塊還是能減少一些工作量的。但當上線的老項目需要對接新項目時,由于有些老項目通常會個性化的生成Token或者是通過一些標識傳到后臺進行認證,再加上老項目運行穩定和投入人力比較少的情況,很多時候都需要新的項目兼容老的認證方式,這個時候就可以考慮自定義的認證方式了。

正文

其實主要的原理就是根據項目的認證傳參情況,從請求頭或請求參數中取出對應的Token或標識進行驗證即可;和很多小伙伴們一樣,一開始想到的方法是通過授權過濾器的方式實現即可,但其實可以模仿AddJwtBearer的認證方式自己實現一個,主要的邏輯就是繼承AuthenticationHandler之后,在HandleAuthenticateAsync方法中編寫自己的驗證就OK了,詳細步驟如下:

1. 編寫驗證邏輯

這里還是創建一個WebAPI項目進行演示

1.1 定義自己的AuthenticationScheme

就像Bearer一樣,定義自己的Scheme,在這個類里也可以定義需要的配置信息,可以在驗證邏輯的時候用到,如下:

18c5fabe4899fef31bc6564745c96b01.png
1.2 繼承AuthenticationHandler編寫自己的驗證邏輯

添加一個類繼承自AuthenticationHandler,重寫HandleAuthenticateAsync方法,在里面可以寫和業務相關的任何驗證邏輯:

c8b64f4d8190a51d95c1a2db12f2e30c.png
1.3 定義一個擴展方法,像AddJwtBearer一樣使用

為了方便調用,按照規范為AuthenticationBuilder定義一個擴展方法:

c601fb733b9b3ec4c399981faf55229f.png

2. 使用自定義的認證方式

上面的驗證邏輯都寫完了,接下來就像使用JWT認證一樣直接使用即可,由于演示環境用的.NET5,在Startup.cs中注冊相關服務和加上對應的認證中間件就行。

10fa9b8e59e67bad3cc0155a77beaac1.png

然后在需要認證控制器或Action方法上打上Authorize屬性就行啦:

198bfee274ce9a054f5209ff47d06714.png

以上就是自定義認證方式的使用步驟,是不是很簡單,來試一下效果:

b58c22ad7612bcdb88632df7e35e40c8.png

加上Token再試試:

52376afdd5ed04bb1d6ccb8924f35dc0.png

用Postman組裝請求頭試試,如下:

1796de2d0acc87327e93373448fa6664.png

在請求頭中加個Token再試試,如下:

4701e68df351187c902812274521228f.png

好了,自定義認證的思路就是這樣,只需要根據項目對接的情況,在校驗邏輯那塊改成項目實際的場景即可。

源代碼地址:

https://gitee.com/CodeZoe/dot-net-core-study-demo/tree/main/CustomAuth

總結

以上方案其實在之前的項目也使用到了,最近對接新老系統時,又需要這塊,間隔時間有點長,有一些小細節忘了,所以趕緊記錄一下,下次直接翻文章就行啦。

關注“Code綜藝圈”,和我一起學習吧。

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

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

相關文章

C語言試題187之實現strspn函數功能

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款刷算法、筆試、面經、拿大公司offer神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目: 實現st…

一張圖對比騰訊、阿里、百度的薪資職級

作為中國互聯網三大巨頭的騰訊、阿里、百度,他們的職級薪資福利等等等一直都是個謎,不為外界所知。今天,我就來為大家全面揭曉—— Here we go~ 公司總部 - 騰訊:總部在深圳南山科技園,CBD地段&#xff1…

旺財速啃H5框架之Bootstrap(五)

在上一篇<<旺財速啃H5框架之Bootstrap&#xff08;四&#xff09;>>做了基本的框架&#xff0c;<<旺財速啃H5框架之Bootstrap&#xff08;二&#xff09;>>篇里也大體認識了bootstrap.css樣式&#xff0c;下面我們來學習常見的CSS操控內容篇幅。。。。…

【專升本計算機】最新甘肅省專升本考試C語言部分復習題帶答案

最新甘肅省專升本考試C語言部分復習題帶答案 考點1.1-1.2 1、 C 語言源程序文件經過 C 編譯器編譯之后生成一個后綴為( )的文件 A. .c B. .obj C. .exe D. .bas 2、 C 語言源程序文件經過 C 編譯器連接之后生成一個后綴為( )的文件 A. .c B. .obj C. .exe D. .bas 3、完成 …

浮點數一些設計原理

摘要&#xff1a;本篇文章會講述浮點數的設計原理&#xff0c;比如如何存儲二進制的問題&#xff0c;從而幫助我們更好的編碼。 __1. deading code __ console.log(1.0-0.9 0.1); //輸出 false console.log(1.0-0.9, 0.1); //輸出 0.09999999999999998 0.1 //所以判斷浮點運算…

Atitit. http 代理原理 ?atiHttpProxy ?大木馬

Atitit. http 代理原理 atiHttpProxy 大木馬 1. 面這張圖可以清晰地闡明HttpProxy的實現原理&#xff1a;1 2. 代理服務器用途1 3. 其中流程具體如下&#xff1a;2 4. 設計規劃3 5. 結束語4 1. 面這張圖可以清晰地闡明HttpProxy的實現原理&#xff1a; 2. 代理服務器用途 代…

[轉]一文揭秘阿里、騰訊、百度的薪資職級

上周&#xff0c;阿里巴巴董事長兼CEO逍遙子發布內部郵件&#xff0c;宣布了阿里巴巴新一輪組織部晉升名單&#xff0c;涉及所有晉升到P10、P11、P12的高P的人員。其中晉升到M7/ P12的高級管理者包括&#xff1a;淘寶、天貓、阿里媽媽事業群總裁蔣凡、阿里本地生活服務公司CEO王…

C語言試題188之實現strcspn函數功能

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款刷算法、筆試、面經、拿大公司offer神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目: 實現st…

【ArcGIS微課1000例】0014:ArcGIS中如何將kml(kmz)文件轉shp,并進行投影轉換?

KML(Keyhole Markup Language,Keyhole 標記語言)最初是由Google 旗下的Keyhole 公司開發和維護的一種基于XML 的標記語言,利用XML 語法格式描述地理空間數據(如點、線、面、多邊形和模型等),適合網絡環境下的地理信息協作與共享。2008 年4月,KML的最新版本2.2 被OGC 宣布為開…

寫一鍵部署bash腳本

因為我開源的一鍵部署應用到linux服務器的AntDeploy&#xff0c; 在linux部署是需要安裝一個agent服務(systemctl服務)如果是手動第一次安裝的話 需要敲下載 wget解壓 tar修改配置文件的token復制到指定安裝目錄設置權限設置systemd設置systemctl清除臨時文件至少這8中類型的命…

UITableView的使用及代理方法

在App開放中我們經常會使用到UITabbleView&#xff0c;常用于數據展示。那么使用時不得不引入兩個代理方法<UITableViewDataSource,UITableViewDelegate>。 下面我們來簡單的創建一個TableView并介紹下其基本屬性。 property (nonatomic,strong) UITableView * myTable; …

Java集合和泛型練習及面試題——博客園:師妹開講啦

給定一段JAVA代碼如下&#xff1a;要打印出list中存儲的內容&#xff0c;以下語句正確的是&#xff08; B &#xff09; ArrayList list new ArrayList( ) list.add(“a”) list.add(“b”) Iterator it list.iterator( ) A.while(it. Next( ) )   system.out.prin…

對于經常需要truncate的表進行固定統計信息

為什么80%的碼農都做不了架構師&#xff1f;>>> 大家做過統計的一些存儲過程可能會知道&#xff0c;我們經常有這類表&#xff0c;要先truncate它&#xff0c;執行插入&#xff0c;再在執行相關sql&#xff0c;這就會導致有一個時間誤差&#xff0c;如果在truncate…

ArcGIS實驗教程——實驗四十一:ArcGIS區域分析統計直方圖(土地利用--坡度分級柱狀統計圖的制作)

文章目錄 一、任務描述二、實驗數據三、實驗過程一、任務描述 在實際工作中,通常需要統計不同類型的土地利用數據與坡度的關系。本實驗中以土地利用landuse和數字高程模型dem數據為例,基于ArcGIS平臺,統計了村莊、風景名勝、林地、草地、旱地等多種類型土地利用數據所占用的…

[轉]圖片格式WEBP全面解析

前言 不管是 PC 還是移動端&#xff0c;圖片一直是流量大頭&#xff0c;以蘋果公司 Retina 產品為代表的高 PPI 屏對圖片的質量提出了更高的要求&#xff0c;如何保證在圖片的精細度不降低的前提下縮小圖片體積&#xff0c;成為了一個有價值且值得探索的事情。 但如今對于 JP…

C語言試題189之編寫一個程序,按照下圖中的樣子創建數據結構,最后三個對象都是動態分配的結構。第一個對象則可能是一個靜態的指向結構的指針

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款刷算法、筆試、面經、拿大公司offer神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目: 編寫一…

基于.NetCore開發博客項目 StarBlog - (15) 生成隨機尺寸圖片

系列文章基于.NetCore開發博客項目 StarBlog - (1) 為什么需要自己寫一個博客&#xff1f;基于.NetCore開發博客項目 StarBlog - (2) 環境準備和創建項目基于.NetCore開發博客項目 StarBlog - (3) 模型設計基于.NetCore開發博客項目 StarBlog - (4) markdown博客批量導入基于.N…

【初探移動前端開發03】jQuery Mobile(上)

前言到目前為止&#xff0c;我打了幾天醬油了&#xff0c;這幾天落實了工作&#xff0c;并且看了一部電視連續劇&#xff08;陳道明-手機&#xff09;&#xff0c;我很少看連續劇了&#xff0c;但是手機質量很高啊&#xff0c;各位可以看看。我們今天先學習一下jquery mobile的…

Git Bash的一些命令和配置

查看git版本號&#xff1a; git --version 如果是第一次使用Git&#xff0c;你需要設置署名和郵箱&#xff1a; $ git config --global user.name "用戶名" $ git config --global user.email "電子郵箱" 檢查你的設置 $ git config --list 或單獨檢查一項…

/dev/null 文件

/dev/null 文件 如果希望執行某個命令&#xff0c;但又不希望在屏幕上顯示輸出結果&#xff0c;那么可以將輸出重定向到 /dev/null&#xff1a; $ command > /dev/null /dev/null 是一個特殊的文件&#xff0c;寫入到它的內容都會被丟棄&#xff1b;如果嘗試從該文件讀取內容…