日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤

發布時間:2023/12/18 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

.NetCore 下開發獨立的(RPL)含有界面的組件包 (一)準備工作

.NetCore 下開發獨立的(RPL)含有界面的組件包 (二)擴展中間件及服 務

.NetCore 下開發獨立的(RPL)含有界面的組件包 (三)構建界面

.NetCore 下開發獨立的(RPL)含有界面的組件包 (四)授權過濾

.NetCore 下開發獨立的(RPL)含有界面的組件包 (五)授權過濾參數處 理

.NetCore 下開發獨立的(RPL)含有界面的組件包 (六)實現業務功能

對于我們的組件頁面當然不是所有的用戶都能訪問,所以這里我們需要添加一個我們自己定義的一些授權過濾條件,那么這一塊怎么來寫呢?

首先我們必然會想到中間件,前面章節說道了中間件路由,我們只需要在路由地址之前校驗一下就ok了,有了這個思想我們就來實現一下

當然需要我們自己定義的一些規則,比如組件下面的地址都是根據pathstring來設計,有自己的規則,不然中間件會過濾到其他的中間件路由地址

不如 ,dashboard頁面是 /adminchain , 其他功能都可以以?/adminchain 以這個為開始? 如:?/adminchain/client?

那么我們在中間件路由地址前設置下:

string routeUrl = context.Request.Path;if (routeUrl.StartsWith(_options.PathRoute)){//這里做驗證/*這里是驗證內容*/if (routeUrl.Equals(_options.PathRoute)){var view = new HomeIndex();await view.ExecuteAsync(context);}}else{await _next(context);}

授權需要自定義,這里就需要把這個加到DashboardOptions中去設置,這里我們在里面多添加了一個授權屬性 Authorization,并設置了默認的校驗規則?

public class DashboardOptions{public DashboardOptions(){AppPath = "/";PathRoute = "/adminchina";Authorization = new[] { new DefaultAuthorizationFilter() };}/// <summary>/// 返回應用路徑地址/// </summary>public string AppPath { get; set; }/// <summary>/// route 地址/// </summary>public string PathRoute { get; set; }/// <summary>/// 授權校驗過濾器/// </summary>public IEnumerable<IDashboardAuthorizationFilter> Authorization { get; set; }}

在IDashboardAuthorizationFilter接口中我們只需要定義一個是否授權就行了,這里我們先不給參數,后面在來做

public interface IDashboardAuthorizationFilter{bool IsAuthorize();}

我們添加了DefaultAuthorizationFilter的默認實現,我們這里來測試下 返回false的處理

public class DefaultAuthorizationFilter : IDashboardAuthorizationFilter{public bool IsAuthorize(){return false;}}

下來繼續來寫中間件里面的驗證

//這里做驗證if (_options.Authorization.Any(auth => !auth.IsAuthorize())){context.Response.ContentType = "text/html; charset=utf-8";await context.Response.WriteAsync("這是沒有授權的頁面");return;}

?

當我們訪問中間件的時候就經過授權過濾了,其實做到這里其實還不夠,因為我們在中間件自定義授權過濾中要根據某些業務獲取某些服務,所以里面必須要獲取某些服務,所以 IsAuthorize是需要添加參數的,下一章節就來說下這個參數應該寫什么,怎么來寫

?

?當然這里是采用了默認的授權過濾,這里我們來添加一個自己的Filter,首先我們在WebTest中的UseAdminChina修改下,索性我們就把地址一起修改下,首先添加一個自定義的過濾器

public class CustomAuthorizeFilter : IDashboardAuthorizationFilter{public bool IsAuthorize(){return true;}}

然后在Configure中修改下中間件

app.UseAdminChina(options=> {options.PathRoute = "/adminchinatest";options.Authorization = new[] {new CustomAuthorizeFilter()};});

由于這里參數,所以為了達到測試效果,我將默認的授權改成了true,將自定義的改成了false,用來測試自定義的過濾接口知否被處理

public class CustomAuthorizeFilter : IDashboardAuthorizationFilter{public bool IsAuthorize(){return false;}}

我們訪問之前的地址發現已經沒有了

?

訪問下新的地址

至此,發現我們正在想hanfire這類組件慢慢的靠近,下一篇寫一點Filter參數方面的處理

?

轉載于:https://www.cnblogs.com/liyouming/p/10194845.html

總結

以上是生活随笔為你收集整理的.NetCore 下开发独立的(RPL)含有界面的组件包 (四)授权过滤的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。