精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

.NET Core授權失敗如何自定義響應信息?

開發 后端
本文我們來看看在.NET 5中為何要出現針對授權失敗的中間件接口?它是如何一步步衍生出來的呢?以及 對于授權失敗根據實際需要如何自定義響應錯誤,以及如何獲取對應路由信息等等。

 [[410575]]

本文轉載自微信公眾號「JeffckyShare」,作者Jeffcky。轉載本文請聯系JeffckyShare公眾號。

本文我們來看看在.NET 5中為何要出現針對授權失敗的中間件接口?它是如何一步步衍生出來的呢?以及 對于授權失敗根據實際需要如何自定義響應錯誤,以及如何獲取對應路由信息等等

授權失敗自定義響應信息

如下是在.NET 5之前,對于授權處理,我們大多實現自定義的AuthorizationHandler

  1. public class CustomAuthorizeHandler : AuthorizationHandler<CustomAuthorizationRequirement> 
  2.     protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomAuthorizationRequirement requirement) 
  3.     { 
  4.         throw new NotImplementedException(); 
  5.     } 
  6.  
  7. public class CustomAuthorizationRequirement : IAuthorizationRequirement 
  8.     public CustomAuthorizationRequirement() 
  9.     { 
  10.     } 

但此時參數給予的是授權上下文,我們并不能拿到當前請求上下文中的相關信息,如果是在mvc中,想必大多是如下這般獲取的

  1. protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomAuthorizationRequirement requirement) 
  2.     var context = context.Resource as HttpContext; 

但對于前后分離的web api中,若我沒記錯的話,這樣是獲取到的是空,于是乎我們借助于注入上下文接口實現,演變成如下這樣

  1. public class CustomAuthorizeHandler : AuthorizationHandler<CustomAuthorizationRequirement> 
  2.     private readonly IHttpContextAccessor _accessor; 
  3.     public CustomAuthorizeHandler(IHttpContextAccessor accessor) 
  4.     { 
  5.         _accessor = accessor; 
  6.     } 
  7.     protected async override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomAuthorizationRequirement requirement) 
  8.     { 
  9.         var httpContext = _accessor.HttpContext; 
  10.  
  11.         // 授權失敗響應信息 
  12.         await httpContext.Response.WriteAsync("授權失敗"); 
  13.  
  14.         //響應失敗調用 
  15.         context.Fail(); 
  16.  
  17.     } 

通過上下文可以拿到比如用戶聲明信息等等,貌似已經基本滿足我們實際業務需求,那要是我想獲取路由信息又該如何呢?在3.0以下貌似只能通過Path自己解析(個人猜測)

從.NET Core 3.0+上,官方開放針對上下文的擴展方法,提供給我們獲取路由節點元數據詳細信息

在該終結點類存在一個元數據屬性,該屬性為集合,該元數據包含任何你想要的東東

這里必須強調一下,我最喜愛.NET Core的一點是,很多時候我們會封裝類庫,并在類庫中使用到Web APi中相關的上下文一切信息等等,如果是以前.NET Framework怕是有點麻煩

比如如上在類庫中獲取上下文接口,如果你還是延續舊思想,查看vs智能提示你是否需要安裝包,你會發現在Web APi中版本和你安裝的版本是對應不上的,這可能是有問題的哈(具體細節我并未深入探究),但實際上我想安裝的是.NET 5

在.NET Core類庫中要實現.NET Core相關基礎框架信息,只需要在類庫項目文件中引入支持.NET Core應用程序包包即可,如此才和當前應用程序版本完全一致

  1. <ItemGroup> 
  2.    <FrameworkReference Include="Microsoft.AspNetCore.App" /> 
  3.  </ItemGroup> 

 

面向不同群體讀者,這里重點強調下,以免初學.NET Core童鞋路走偏了!話題扯遠了,比如如上述我們想要獲取到元數據中的控制器和action名稱,該元數據集合參數都是object,所以我們想要對應的信息,需要稍微清楚一點.NET Core基本流程處理所提供的各個對象

  1. public class CustomAuthorizeHandler : AuthorizationHandler<CustomAuthorizationRequirement> 
  2.     private readonly IHttpContextAccessor _accessor; 
  3.     public CustomAuthorizeHandler(IHttpContextAccessor accessor) 
  4.     { 
  5.         _accessor = accessor; 
  6.     } 
  7.     protected async override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomAuthorizationRequirement requirement) 
  8.     { 
  9.         var httpContext = _accessor.HttpContext; 
  10.  
  11.         var endPoint = httpContext.GetEndpoint(); 
  12.  
  13.         var controllerActionDescriptor = (ControllerActionDescriptor)endPoint.Metadata 
  14.             .ToList().FirstOrDefault(d => d is ControllerActionDescriptor); 
  15.  
  16.         var controllerName = controllerActionDescriptor.ControllerName; 
  17.  
  18.         var actionName = controllerActionDescriptor.ActionName; 
  19.  
  20.     } 

講到這里,實現對應抽象授權處理對象,基本上可滿足我們的需求,即使上述拿到上下文并響應,但是在接口響應上我們是獲取不到的,因為授權上下文,只提供Fail和Succeed方法,要是我們想根據業務失敗后直接響應呢?所以最大的問題出在:我們無法完全控制響應,以及自定義響應

這個時候,經過開發者在github上激烈的反饋,官方在.NET 5給出了,針對授權處理的中間件接口,上下文也已直接對外暴露

  1. public class CustomAuthorizationMiddlewareResultHandler 
  2.         : IAuthorizationMiddlewareResultHandler 
  3.  
  4.     public async Task HandleAsync(RequestDelegate next
  5.       HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult) 
  6.     { 
  7.         var endPoint = context.GetEndpoint(); 
  8.  
  9.         var controllerActionDescriptor = (ControllerActionDescriptor)endPoint.Metadata 
  10.           .ToList().FirstOrDefault(d => d is ControllerActionDescriptor); 
  11.  
  12.         var controllerName = controllerActionDescriptor.ControllerName; 
  13.  
  14.         var actionName = controllerActionDescriptor.ActionName; 
  15.  
  16.         if (!context.User.Identity.IsAuthenticated) 
  17.         { 
  18.             context.Response.StatusCode = (int)HttpStatusCode.Unauthorized; 
  19.             await context.Response.WriteAsync("{\"data\":{\"succeeded\":false,\"code\":401,\"message\":\"登錄已過期,請重新登錄\"}}"); 
  20.             return
  21.         } 
  22.         else if (!await HandleRequirementEvaluateAsync(context.User, controllerName, actionName)) 
  23.         { 
  24.             context.Response.StatusCode = (int)HttpStatusCode.Forbidden; 
  25.             await context.Response.WriteAsync("{\"data\":{\"succeeded\":false,\"code\":403,\"message\":\"您暫無足夠的權限執行該操作\"}}"); 
  26.             return
  27.         } 
  28.         await next(context); 
  29.     } 

自從.NET 5提供給了我們授權中間件接口,一切又是那么得心應手!

 

責任編輯:武曉燕 來源: JeffckyShare
相關推薦

2021-08-09 10:31:33

自定義授權響應

2009-09-03 13:34:03

.NET自定義控件

2024-04-02 09:52:12

自定義返回類API開發

2013-06-27 11:10:01

iOS開發自定義UISlider

2009-07-06 13:49:29

2009-07-28 09:32:41

ASP.NET自定義控

2009-08-10 14:16:59

ASP.NET自定義控

2009-11-12 16:14:28

ADO.NET自定義對

2009-08-04 13:35:16

ASP.NET自定義樣

2009-08-06 17:13:56

ASP.NET自定義控

2021-07-06 23:48:45

.NET用戶信息

2010-02-07 14:02:16

Android 界面

2009-09-07 22:00:15

LINQ自定義

2023-12-28 08:22:33

響應數據轉換

2015-02-12 15:33:43

微信SDK

2009-11-24 15:11:21

ASP.NET MVC

2009-06-15 09:50:56

自定義datagridVB Express

2009-08-12 14:38:05

ASP.NET Dat

2011-04-19 10:33:16

ASP.NET自定義控

2009-07-20 13:47:08

iBATIS.NET字
點贊
收藏

51CTO技術棧公眾號

中日韩高清电影网| 精品少妇theporn| 欧美一级网址| 亚洲高清视频在线| 久久国产精品免费一区| 国产精品51麻豆cm传媒| 欧美一区91| 日韩精品在线私人| 手机在线看福利| 国产蜜臀一区二区打屁股调教| 久久综合九色综合欧美98| 国产日韩欧美日韩| 日韩三级视频在线| 99久久久国产精品美女| 亚洲精品v欧美精品v日韩精品| 国产一级片91| jizz视频在线观看| 不卡大黄网站免费看| 91久久久久久久| www.久久精品视频| 亚洲先锋成人| 久久好看免费视频| 亚洲综合色一区| 豆花视频一区二区| 91精品久久久久久久久99蜜臂| 国产精品自拍片| 四季久久免费一区二区三区四区| 欧美激情综合五月色丁香| 高清av免费一区中文字幕| 中文字幕一区二区人妻| 性色一区二区三区| 欧美精品久久久久久久| 中文字幕电影av| 四季av一区二区凹凸精品| 亚洲精品综合精品自拍| 美女黄色一级视频| 无码国模国产在线观看| 日韩一区二区中文字幕| 五月天av在线播放| 99riav视频一区二区| 日韩欧美高清视频| 每日在线更新av| 大菠萝精品导航| 亚洲大片精品永久免费| 日韩a级黄色片| 国产美女av在线| 亚洲欧洲国产日本综合| 亚洲黄色一区二区三区| 国产私拍精品| 欧美激情一区二区| 水蜜桃亚洲一二三四在线| 国产三级电影在线观看| 国产午夜一区二区三区| 日本精品视频一区| www.亚洲免费| 中文字幕一区二区三| 亚洲综合五月天| 老司机精品影院| 亚洲欧美一区二区久久| 亚洲一区 在线播放| 米奇精品一区二区三区| 亚洲欧美色综合| 人妻激情另类乱人伦人妻| 午夜小视频在线观看| 一区二区三区中文字幕精品精品 | 亚洲精品怡红院| 粉嫩一区二区三区| 欧美日免费三级在线| 国产3p在线播放| 欧美久久一区二区三区| 精品久久人人做人人爰| 国产精品边吃奶边做爽| 国产a久久精品一区二区三区| 亚洲性xxxx| 黄色香蕉视频在线观看| 欧美精品成人| 91精品国产乱码久久久久久久久| 天码人妻一区二区三区在线看| 天堂一区二区在线免费观看| 国产精品视频yy9099| 99热这里只有精品3| 盗摄精品av一区二区三区| 久久精品中文字幕一区二区三区| 男同在线观看| 综合激情网站| 国产一区二区黑人欧美xxxx| 99久久久无码国产精品性波多| 先锋影音国产精品| 日韩最新免费不卡| 激情五月婷婷在线| 国产精品www.| 日韩av电影国产| 99精品视频免费看| av成人动漫在线观看| 色一情一乱一伦一区二区三区丨| 国产又黄又粗又爽| 亚洲毛片在线| 91精品国产综合久久香蕉最新版 | 在线免费一区| 青青草视频在线视频| 欧美一区二不卡视频| 欧美国产精品一区二区三区| 福利网在线观看| 精品人妻一区二区三区换脸明星| 99re热这里只有精品视频| 亚洲精品一区二| 国产强伦人妻毛片| 久久嫩草精品久久久精品| 一区二区三区精品国产| 一个人www视频在线免费观看| 在线免费视频一区二区| 免费看黄色片的网站| 亚州av乱码久久精品蜜桃| 日韩av123| 欧美特黄一级视频| 中文字幕一区二区三中文字幕| 亚洲在线视频福利| 在线免费看黄| 日本二三区不卡| 两性午夜免费视频| 欧美亚洲国产日韩| 久久国内精品一国内精品| 国产主播第一页| 国产91精品久久久久久久网曝门| 国产在线视频欧美一区二区三区| jizzjizz在线观看| 欧洲另类一二三四区| 精品国产人妻一区二区三区| 欧美日本不卡| 亚洲色图视频网| 欧美一区二区在线视频观看| zzzwww在线看片免费| 欧美肥胖老妇做爰| 黄色在线观看av| 亚洲激情偷拍| 国产伦精品一区二区三区视频免费| 国产在线一在线二| 一本色道a无线码一区v| 国产喷水theporn| 欧洲杯足球赛直播| 热久久这里只有精品| 亚洲影院一区二区三区| 国产精品视频一二三| 久久久久久久久久久福利| 久久国产精品色av免费看| 欧美激情18p| 亚洲黄色小说网| 国产无人区一区二区三区| 久久香蕉视频网站| 亚洲一区二区三区在线免费| 亚洲人成网7777777国产| 久久久久久久久久97| 日韩精品一二三| 亚洲精品一卡二卡三卡四卡| 先锋影音网一区二区| 日韩色av导航| 国产黄色一区二区| 亚洲成人自拍一区| 国产熟妇搡bbbb搡bbbb| 天堂久久久久va久久久久| 色姑娘综合网| 国产激情欧美| 欧美成人免费播放| 黄色成人一级片| 欧美性xxxx极品hd欧美风情| 变态另类ts人妖一区二区| 看电视剧不卡顿的网站| 青青草免费在线视频观看| 超碰一区二区三区| 777午夜精品福利在线观看| 精品视频二区| 欧美一区永久视频免费观看| xxxxxx国产| 久久久蜜桃精品| www午夜视频| 欧美日韩网址| 欧美一区1区三区3区公司 | 狠狠躁夜夜躁久久躁别揉| 日韩人妻无码一区二区三区| 免费日本视频一区| 狠狠精品干练久久久无码中文字幕| 狠狠一区二区三区| 国产极品精品在线观看| 亚洲区欧洲区| 亚洲人成电影在线播放| 国产欧美日韩成人| 天天影视网天天综合色在线播放| 一级特黄曰皮片视频| 国产精品123| 日韩亚洲在线视频| 欧美69视频| 欧美亚洲另类久久综合| 国产亚洲高清一区| 日韩免费在线看| 性xxxxfjsxxxxx欧美| 亚洲无线码在线一区观看| 国产激情久久久久久熟女老人av| 一本久久a久久精品亚洲| 免费在线黄色网| 久久久综合网站| 亚洲精品一区二区18漫画| 丝袜a∨在线一区二区三区不卡| 天天干天天色天天爽| 精品福利一区| 91久久久亚洲精品| 在线观看福利电影| 久久99精品国产99久久6尤物| 国产日本在线| 亚洲黄色有码视频| 精品人妻一区二区三区浪潮在线| 色婷婷久久久亚洲一区二区三区| 久草视频免费在线| 国产精品萝li| 国产av自拍一区| kk眼镜猥琐国模调教系列一区二区| 国产九九在线观看| 欧美专区一区二区三区| 岛国大片在线播放| 欧美黄色免费| 国产系列第一页| 狠狠色狠狠色综合婷婷tag| 精品国产91亚洲一区二区三区www| 亚洲精品毛片| 国产成+人+综合+亚洲欧洲| 国精一区二区三区| 欧美成人性生活| 美女隐私在线观看| 最新日韩中文字幕| 国产日本在线观看| 亚洲人成在线一二| 日韩精品系列| 精品一区电影国产| 色呦呦视频在线| 精品剧情在线观看| 亚洲黄色a级片| 精品国产乱码久久久久久浪潮 | 蜜桃视频一区二区三区在线观看| 国产高清av在线播放| 狠狠综合久久| 国产精品久久国产| 国产综合精品| 免费看欧美一级片| 一区在线播放| 日韩精品综合在线| 亚洲一级二级| 黄色一级在线视频| 国产精品腿扒开做爽爽爽挤奶网站| 97在线国产视频| 国产精品嫩草99av在线| 免费黄色福利视频| 日韩不卡在线观看日韩不卡视频| 国产成人无码一二三区视频| 久久九九国产| 超碰成人在线播放| 国产乱子伦视频一区二区三区| 日本亚洲一区二区三区| 国产不卡视频一区| 国产精品久久久久久久无码| 99re6这里只有精品视频在线观看| 中文字幕 亚洲一区| 久久久久国产成人精品亚洲午夜| 玖玖爱在线观看| 国产精品夫妻自拍| 草视频在线观看| 亚洲成人综合网站| 日本a级c片免费看三区| 精品国产成人在线| 日本高清不卡码| 欧美在线一区二区| 国产精品欧美综合亚洲| 精品国内二区三区| 欧美777四色影视在线| 色小说视频一区| 欧美性受ⅹ╳╳╳黑人a性爽| 性欧美xxxx| 中文字幕系列一区| 97超级碰碰| 亚洲区小说区图片区qvod| 亚洲一二区在线| 一区免费视频| av网站在线不卡| 国产白丝网站精品污在线入口| 三级a三级三级三级a十八发禁止| 激情欧美一区二区三区在线观看| 四虎成人免费视频| 国产欧美精品一区二区色综合朱莉| 国产美女久久久久久| 午夜精品久久久久久久蜜桃app| 久操视频在线免费观看| 日韩一区二区免费在线观看| 日韩大片b站免费观看直播| 日韩视频第一页| 正在播放日韩精品| 国产精品成人国产乱一区| 911亚洲精品| 亚洲自拍的二区三区| 一本一道久久综合狠狠老精东影业| 99视频在线视频| 成人av在线播放网站| 久久久久人妻一区精品色| 精品露脸国产偷人在视频| 国产精品久久影视| 亚洲美女在线看| 污视频在线免费观看网站| 国产成人精品视频在线| 国产精品chinese在线观看| 亚洲图片在线观看| 香蕉成人久久| www.com日本| 国产精品福利影院| 免费观看日批视频| 亚洲第一中文字幕| 99热国产在线| 国产精品丝袜高跟| 免费一区二区| aaa级精品久久久国产片| 国产电影一区二区| 日本一区二区三区四区在线观看 | 欧美激情在线看| 国产视频精品视频| 91麻豆国产福利精品| 久久久夜色精品| 717成人午夜免费福利电影| 欧美日韩免费做爰大片| 久久久久久久久91| 国产精品视频一区二区三区综合| 天天综合色天天综合色hd| 乱h高h女3p含苞待放| 中文在线一区二区| 中文字幕在线播| 日韩欧美综合一区| 99福利在线| 成人免费视频网址| 日韩成人亚洲| 日本精品国语自产拍在线观看| 欧美一区=区| 精品中文字幕av| 91色porny蝌蚪| 日本一级一片免费视频| 国产精品久久久久久久久快鸭 | 草碰在线视频| 热99精品里视频精品| 麻豆理论在线观看| 好看的日韩精品| 亚洲精品韩国| 中文字幕乱码在线| 久久精品国产久精国产爱| 亚洲狠狠婷婷综合久久久久图片| 成人欧美一区二区三区1314| 91成品人影院| 裸体女人亚洲精品一区| 欧美成人hd| 亚洲最大福利视频网站| 国产一区日韩一区| 成熟妇人a片免费看网站| 久久亚洲国产精品一区二区| 99r国产精品视频| 爽成人777777婷婷| 黄色一级片免费播放| 一卡二卡三卡日韩欧美| 三级视频在线看| 欧美在线激情网| 久久99国内| 不卡的av中文字幕| 亚洲综合清纯丝袜自拍| 国产91麻豆视频| 久久精品99久久久久久久久| 精品国产乱码一区二区三区 | 51午夜精品国产| 岛国成人毛片| 国产在线拍揄自揄视频不卡99 | 久久99亚洲精品| 另类一区二区三区| 成人精品视频在线| 欧美视频网站| 黄色片子免费看| 国产精品久久777777| 殴美一级特黄aaaaaa| 国产精品高潮呻吟久久av无限| 欧美国产小视频| 88av在线播放| 亚洲综合免费观看高清完整版| 亚洲精品国产精| 久久久久国产精品一区| 欧洲精品99毛片免费高清观看 | 日本不卡1234视频| 亚洲欧美在线网| 成人精品在线视频观看| 中文字幕日韩三级片| 在线91免费看| 不卡福利视频| 欧美精品一区二区三区蜜臀| 国产精品美女毛片真酒店| 亚洲精品一二三四区| 国产中文字幕在线看| 91精品国产91久久久久久吃药| 久久电影院7| 无码人妻精品一区二区三区温州| 一区二区三区在线免费播放| 日本人妖在线|