亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ASP.NET?Core框架探索之Authentication的權(quán)限認(rèn)證過程解析

 更新時間:2022年03月17日 09:57:57   作者:EdisonXie  
這篇文章主要介紹了ASP.NET?Core框架探索之Authentication的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

今天我們來探索一下ASP.NET Core中關(guān)于權(quán)限認(rèn)證,所謂權(quán)限認(rèn)證,就是通過某些方式獲取到用戶的信息。

需要開啟權(quán)限認(rèn)證,我們首先需要在容器中注入認(rèn)證服務(wù),使用services.AddAuthentication。進(jìn)入該方法的源碼,最重要的其實就是AddAuthenticationCore方法,他向容器中注入了認(rèn)證體系中很重要的對象:IAuthenticationService、IAuthenticationHandlerProvider、IAuthenticationSchemeProvider

public static IServiceCollection AddAuthenticationCore(this IServiceCollection services)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            services.TryAddScoped<IAuthenticationService, AuthenticationService>();
            services.TryAddSingleton<IClaimsTransformation, NoopClaimsTransformation>(); // Can be replaced with scoped ones that use DbContext
            services.TryAddScoped<IAuthenticationHandlerProvider, AuthenticationHandlerProvider>();
            services.TryAddSingleton<IAuthenticationSchemeProvider, AuthenticationSchemeProvider>();
            return services;
        }

然后還需要在Configure管道處理中加上需要權(quán)限認(rèn)證app.UseAuthentication(),該方法會向處理管道中添加名為AuthenticationMiddleware的中間件,具體一個請求到來時,框架是如何進(jìn)行權(quán)限認(rèn)證的處理邏輯都在這里。

下面我們就大致討論一下AuthenticationMiddleware中間件中對于權(quán)限認(rèn)證過程的細(xì)節(jié):

1、請求進(jìn)入認(rèn)證環(huán)節(jié),首先會進(jìn)入IAuthenticationSchemeProvider對象拿到AuthenticationOptions對象中的IList<AuthenticationSchemeBuilder>集合,所有注冊到認(rèn)證體系中的認(rèn)證方案都會在該集合中拿到。

2、通過循環(huán)集合,調(diào)用AuthenticationSchemeBuilder對象的Builder方法去獲得所有的認(rèn)證方案AuthenticationScheme,將得到的AuthenticationScheme以AuthenticationScheme.Name作為key保存到AuthenticationSchemeProvider對象的字典集合IDictionary<string, AuthenticationScheme>中,這樣AuthenticationSchemeProvider就擁有了返回AuthenticationScheme的能力,通過傳入認(rèn)證方案名稱,即可得到方案對象。

3、拿到了AuthenticationScheme對象,其認(rèn)證處理類型即可在HandlerType屬性中得到,然后在IAuthenticationHandlerProvider的實例對象中根據(jù)HandlerType創(chuàng)建一個認(rèn)證處理對象IAuthenticationHandler,最后調(diào)用該對象的AuthenticateAsync方法就是完成具體的認(rèn)證處理邏輯。需要注意的是這里的IAuthenticationHandler對象會根據(jù)每個AuthenticationScheme具備的認(rèn)證處理邏輯而來,所以得到的AuthenticationScheme不同,認(rèn)證處理的邏輯就不同。

下圖是我針對認(rèn)證流程畫的一個的大致過程:

 以上就是用戶認(rèn)證體系中大致認(rèn)證邏輯,當(dāng)然通過以上的描述還會存在以下疑點:

1、進(jìn)入認(rèn)證環(huán)節(jié)后,AuthenticationSchemeProvider可能會擁有很多個AuthenticationScheme,需要通過傳入某個認(rèn)證方案名稱來拿到具體的AuthenticationScheme,那么這個傳入的動作是在哪里呢?

2、AuthenticationSchemeProvider對象在實例化的時候從AuthenticationOptions對象中獲取IList<AuthenticationSchemeBuilder>集合進(jìn)行循環(huán)Builder得到AuthenticationScheme,那AuthenticationOptions中該集合的數(shù)據(jù)是在什么時候添加進(jìn)去的呢?

3、如何在認(rèn)證體系中添加需要的AuthenticationScheme呢?

以Cookie為例,我們會在向容器添加認(rèn)證服務(wù)的時候就會指定默認(rèn)的認(rèn)證方案名稱:service.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme),方法返回AuthenticationBuilder,但此刻還只是組建了認(rèn)證服務(wù)的框架,還需要向這個框架中添加處理認(rèn)證的方案,所以會通過AuthenticationBuilder.AddCookie將Cooike的認(rèn)證方案添加進(jìn)來,當(dāng)然我們可以添加很多個方案,比如使用JWT進(jìn)行認(rèn)證,但實際認(rèn)證過程還是根據(jù)傳遞的默認(rèn)方案的名稱進(jìn)行的。

到此這篇關(guān)于ASP.NET Core框架探索之Authentication的文章就介紹到這了,更多相關(guān)ASP.NET Core Authentication內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ASP.NET Core全局異常處理

    ASP.NET Core全局異常處理

    這篇文章介紹了ASP.NET Core全局異常處理的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • asp.net中動態(tài)改變網(wǎng)頁標(biāo)題的代碼

    asp.net中動態(tài)改變網(wǎng)頁標(biāo)題的代碼

    asp.net中動態(tài)改變網(wǎng)頁標(biāo)題的代碼,需要的朋友可以參考下。
    2011-02-02
  • ASP.NET圖片處理三類經(jīng)典問題

    ASP.NET圖片處理三類經(jīng)典問題

    這篇文章主要介紹了ASP.NET圖片處理三類經(jīng)典問題,驗證碼的實現(xiàn)、給圖片加文字,最后一個就是生成縮略圖,感興趣的小伙伴們可以參考一下
    2015-09-09
  • asp.net 讀取配置文件方法

    asp.net 讀取配置文件方法

    asp.net 讀取配置文件方法,需要的朋友可以參考下。
    2011-12-12
  • .NET中彈性和瞬時處理庫Polly的使用詳解

    .NET中彈性和瞬時處理庫Polly的使用詳解

    Polly 是一個 .NET 彈性和瞬態(tài)故障處理庫,允許開發(fā)人員以 Fluent 和線程安全的方式來實現(xiàn)重試、斷路、超時、隔離和回退策略,下面就跟隨小編一起來看看它的具體使用吧
    2024-01-01
  • .Net Core中使用ExceptionFilter過濾器的方法

    .Net Core中使用ExceptionFilter過濾器的方法

    這篇文章主要介紹了.Net Core中使用ExceptionFilter過濾器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • ASP.NET實現(xiàn)文件上傳

    ASP.NET實現(xiàn)文件上傳

    這篇文章主要為大家詳細(xì)介紹了ASP.NET實現(xiàn)文件上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • asp.net Linq TO Sql 分頁方法

    asp.net Linq TO Sql 分頁方法

    臨近春節(jié),手頭工作已告一段落,閑來無事寫了一個 linq to sql 分頁方法。代碼若有不妥之處,請各位高手多提寶貴意見。
    2010-02-02
  • ASP.NET 圖片加水印防盜鏈實現(xiàn)代碼

    ASP.NET 圖片加水印防盜鏈實現(xiàn)代碼

    ASP.NET 圖片加水印防盜鏈實現(xiàn)代碼,需要的朋友可以參考下。
    2011-12-12
  • asp.net?web?api2設(shè)置默認(rèn)啟動登錄頁面的方法

    asp.net?web?api2設(shè)置默認(rèn)啟動登錄頁面的方法

    這篇文章主要介紹了asp.net?web?api2設(shè)置默認(rèn)啟動登錄頁面的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09

最新評論