中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

.NetCore認(rèn)證系統(tǒng)的示例分析-創(chuàng)新互聯(lián)

小編給大家分享一下.Net Core認(rèn)證系統(tǒng)的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站是一家專業(yè)提供龍安企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、HTML5建站、小程序制作等業(yè)務(wù)。10年已為龍安眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

1、簡介

省去前面的創(chuàng)建Core Web項(xiàng)目的一系列操作.VS幫你自動(dòng)化初始化好所有的基礎(chǔ)組件、環(huán)境.第一步就是認(rèn)證.就是登陸.當(dāng)然微軟提供了一套登陸組件.很全,很完善。項(xiàng)目在Core源碼

.Net Core認(rèn)證系統(tǒng)的示例分析

Security文件夾下,源碼自行去github下載.里面提供了若干個(gè)認(rèn)證方法,常見的Cookie認(rèn)證、JwtBear認(rèn)證等等.還包括FaceBook、Google等遠(yuǎn)程認(rèn)證方式.

.Net Core認(rèn)證系統(tǒng)的示例分析

本文暫時(shí)不講解具體的認(rèn)證方式,主要闡述核心認(rèn)證流程.

(1)、認(rèn)證系統(tǒng)的執(zhí)行過程

Core啟動(dòng)認(rèn)證系統(tǒng)的方式很簡單

.Net Core認(rèn)證系統(tǒng)的示例分析

很簡單的一段代碼,看看它干了什么

.Net Core認(rèn)證系統(tǒng)的示例分析

很簡單,注入認(rèn)證中間件,關(guān)于中間件這里就不說多,不是文本的重點(diǎn),自行百度.看看中間價(jià)干了什么.

.Net Core認(rèn)證系統(tǒng)的示例分析

核心代碼,首先拿到DI中注入的認(rèn)證請求處理器集合,接著去DI中獲取認(rèn)證處理方案集合中的處理認(rèn)證請求上下文的方案類.接著去處理器集合中拿到處理遠(yuǎn)程認(rèn)證請求上下文的方案類對應(yīng)的認(rèn)證請求處理器,接著執(zhí)行處理器的HandleRequestAsync方法,完成遠(yuǎn)程認(rèn)證的處理.

.Net Core認(rèn)證系統(tǒng)的示例分析

接著

.Net Core認(rèn)證系統(tǒng)的示例分析

遠(yuǎn)程認(rèn)證流程執(zhí)行完畢之后,直接return.反之,如果當(dāng)前不是使用遠(yuǎn)程認(rèn)證,接著去認(rèn)證方案中拿到默認(rèn)的認(rèn)證方案,不為空,執(zhí)行上下文的擴(kuò)展方法context.AuthenticateAsync,這個(gè)方法干了什么如下:

.Net Core認(rèn)證系統(tǒng)的示例分析

執(zhí)行DI中注入的認(rèn)證服務(wù)方法,并傳入上下文和默認(rèn)的認(rèn)證方案名稱.

.Net Core認(rèn)證系統(tǒng)的示例分析

.Net Core認(rèn)證系統(tǒng)的示例分析

先判斷存不存在默認(rèn)認(rèn)證方案,不存在拋異常,接著去所有的認(rèn)證處理器集合中拿到默認(rèn)認(rèn)證方案的處理器.接著調(diào)用處理的認(rèn)證方法,認(rèn)證成功,判斷當(dāng)前用戶身份集合中在臨時(shí)緩存中存不存在,不存在,可以執(zhí)行Claim的轉(zhuǎn)換.這很好,說明用戶認(rèn)證成功之后的Cliam也是可以被轉(zhuǎn)換的.

.Net Core認(rèn)證系統(tǒng)的示例分析

只要注入IClaimsTransformation服務(wù)即可,你就可以執(zhí)行你需要的業(yè)務(wù)的Claim轉(zhuǎn)換,最后返回結(jié)果

.Net Core認(rèn)證系統(tǒng)的示例分析

到這里整個(gè)認(rèn)證流程結(jié)束.非常的簡單.且關(guān)鍵點(diǎn)的擴(kuò)展微軟都預(yù)留了.可以自定義實(shí)現(xiàn)

(2)、流轉(zhuǎn)服務(wù)的介紹.

上面介紹了整個(gè)認(rèn)證組件的流轉(zhuǎn)過程,因?yàn)槲覍α鞒毯芮宄?所以大家可能還是不理解.所以接下去開始介紹流轉(zhuǎn)必須服務(wù)的注入.

.Net Core認(rèn)證系統(tǒng)的示例分析

認(rèn)證處理器的Provider類,那么Core是在哪里注入認(rèn)證處理器的呢?

.Net Core認(rèn)證系統(tǒng)的示例分析

這里,核心也是紅框里的,下面的只是一些依賴組件。

.Net Core認(rèn)證系統(tǒng)的示例分析

微軟注入默認(rèn)的認(rèn)證處理器.看下獲取處理器的實(shí)現(xiàn),對應(yīng)中間件.

.Net Core認(rèn)證系統(tǒng)的示例分析

閱讀源碼發(fā)現(xiàn),Provider類并不具體實(shí)現(xiàn)提供認(rèn)證處理器的方法.而是通過SchemeProvider來提供.

.Net Core認(rèn)證系統(tǒng)的示例分析

原來是IAuthenticationSchemeProvider類提供認(rèn)證處理器.而且是通過反射實(shí)現(xiàn)(這點(diǎn)開銷,就沒必要考慮性能問題,當(dāng)然你可以考慮重構(gòu)),那么問題來了,在哪里出入IAuthenticationSchemeProvider服務(wù)內(nèi),回到上面那張圖

.Net Core認(rèn)證系統(tǒng)的示例分析

微軟也提供了默認(rèn)實(shí)現(xiàn),去看看GetSchemeAsync方法的實(shí)現(xiàn)

.Net Core認(rèn)證系統(tǒng)的示例分析

.Net Core認(rèn)證系統(tǒng)的示例分析

ok,到這里就說明認(rèn)證處理器是通過向這個(gè)字典寫入值,來實(shí)現(xiàn)的.

.Net Core認(rèn)證系統(tǒng)的示例分析

上面是認(rèn)證方案AuthenticationScheme類的核心字段,HandlerType就是認(rèn)證處理器.

.Net Core認(rèn)證系統(tǒng)的示例分析

AuthenticationSchemeProvider類維護(hù)了一個(gè)_schemes的字典,通過它向外輸出.認(rèn)證方案集合提供類.

.Net Core認(rèn)證系統(tǒng)的示例分析

接著認(rèn)證處理器集合提供類AuthenticationHandlerProvider通過解析

.Net Core認(rèn)證系統(tǒng)的示例分析

認(rèn)證方案集合提供類,拿到所有的認(rèn)證處理器.

到這里,很明顯,所有的認(rèn)證處理器都是通過向AuthenticationSchemeProvider的_schemes字典注入認(rèn)證處理器.既然如此,入口在哪?在AuthenticationBuilder類下面.

.Net Core認(rèn)證系統(tǒng)的示例分析

下面是Cookie認(rèn)證方式注入認(rèn)證處理器的方式

.Net Core認(rèn)證系統(tǒng)的示例分析

AddScmeme方法.在配置參數(shù)的同時(shí),指定了處理器.

接著,回到中間件的圖

.Net Core認(rèn)證系統(tǒng)的示例分析

我們通過AuthenticationBuilder的AddScheme方法向_schemes集合寫入了認(rèn)證處理器且配置了處理器的參數(shù),接著通過AuthenticationHandlerProvider拿到了所有的認(rèn)證處理器.

接著我們通過Schemes方案集合拿到所有處理認(rèn)證請求上下文的處理器,執(zhí)行處理認(rèn)證請求上下文參數(shù).處理完畢.

接著我們解析Schemes中提供的默認(rèn)認(rèn)證方案,代碼如下:

.Net Core認(rèn)證系統(tǒng)的示例分析

.Net Core認(rèn)證系統(tǒng)的示例分析

根據(jù).Net Core認(rèn)證系統(tǒng)的示例分析

這個(gè)配置參數(shù),一般在入口注入:

.Net Core認(rèn)證系統(tǒng)的示例分析

中配置默認(rèn)方案名稱,拿到默認(rèn)認(rèn)證方案.再將處理過的認(rèn)證請求上下文和默認(rèn)方案傳給IAuthenticationService,這個(gè)Service也有默認(rèn)實(shí)現(xiàn),如下:

.Net Core認(rèn)證系統(tǒng)的示例分析

.Net Core認(rèn)證系統(tǒng)的示例分析

AuthenticationService將處理過的認(rèn)證請求上下文交給具體的認(rèn)證請求處理器來處理.并返回處理結(jié)果.認(rèn)證請求處理器前面說過了,通過AuthenticationBuilder的AddScheme方法來注入.

以上是“.Net Core認(rèn)證系統(tǒng)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站名稱:.NetCore認(rèn)證系統(tǒng)的示例分析-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://m.2m8n56k.cn/article46/cciieg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、微信公眾號(hào)、動(dòng)態(tài)網(wǎng)站網(wǎng)站收錄品牌網(wǎng)站設(shè)計(jì)網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
主站蜘蛛池模板: 国产精品欧美视频另类专区 | 特级淫片欧美高清视频蜜桃 | 国产精品手机视频一区二区 | 亚洲精品字幕一区二区三区 | 香港全黄一级毛片在线播放 | 成年女人毛片免费播放视频m | 国产精品理论片在线观看 | 亚洲精品天堂在线观看 | 成 人色 网 站 欧美大片在线观看 | 国产成人丝袜网站在线看 | 中文字幕亚洲另类天堂 | 欧美人成在线观看网站高清 | 一本色道久久爱 | 美美女高清毛片视频黄的一免费 | 亚洲高清免费 | 亚洲视频免 | 国产成人一区二区三区在线播放 | 天堂8资源在线官网资源 | 久久久久女人精品毛片 | 婷婷亚洲久悠悠色在线播放 | 成人午夜网 | 多人伦精品一区二区三区视频 | 日韩三级免费观看 | 男女牲高爱潮免费视频男女 | 成人在线视频免费看 | 日韩亚洲欧美理论片 | 久久精品国产精品亚洲毛片 | 欧美黑人xxxxxxxxxx | 久久亚洲一级毛片 | 久久精品99精品免费观看 | 久久亚洲国产午夜精品理论片 | 免费高清在线爱做视频 | 国产精品视频男人的天堂 | 美女一级毛片 | 初爱视频教程在线观看高清 | 高清视频一区 | 国产午夜精品理论片影院 | 日本一级特黄高清ab片 | 久久精品国产这里是免费 | 一区免费在线观看 | 国产精品合集一区二区 |