精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美日韩在线播放一区| 国产专区综合网| 亚洲一二在线观看| 亚洲天堂2018av| 97超碰资源站在线观看| 成人免费视频视频| 国产精品久久久久久久电影 | 久在线观看视频| av免费在线一区二区三区| 国产麻豆91精品| 日韩av片免费在线观看| 97在线观看视频免费| 伦理一区二区| 欧美一区二区啪啪| 毛葺葺老太做受视频| 青青青草视频在线| 欧美国产精品专区| 精品国产综合| av中文字幕免费在线观看| 在线亚洲免费| 欧美极品美女电影一区| 色欲AV无码精品一区二区久久| 亚洲国产一区二区三区网站| 欧美亚州韩日在线看免费版国语版| 麻豆一区二区三区在线观看| 国产原创av在线| 成人美女视频在线看| 国产日韩欧美视频在线| 色av性av丰满av| 雨宫琴音一区二区在线| 久久久国产精品x99av| av女人的天堂| 人人精品亚洲| 亚洲国产91精品在线观看| 亚洲美女性囗交| 黄瓜视频成人app免费| 亚洲午夜私人影院| 欧美美女黄色网| 国产精品剧情一区二区在线观看| 欧美激情在线一区二区三区| 久久久久久艹| 天堂av资源在线| 国产91精品在线观看| 亚洲自拍偷拍色图| 国产一区二区麻豆| 久色婷婷小香蕉久久| 国产精品激情av电影在线观看| 精品无码人妻一区二区三区| 国产精品porn| 欧美老妇交乱视频| 国产一区二区播放| 综合久久亚洲| 欧美日韩国产二区| 免费中文字幕在线观看| 欧美精品97| 久久久久久久一区二区| 国产真实乱人偷精品视频| 红桃视频欧美| 午夜免费在线观看精品视频| 九热这里只有精品| 亚洲黄页一区| 91高清免费在线观看| 97久久久久久久| 久久精品中文| 国产精品永久免费视频| 97超碰人人模人人人爽人人爱| 精品一区二区在线观看| 成人两性免费视频| 国产裸体无遮挡| 国产成人综合亚洲网站| 狠狠色综合色区| 青青久草在线| 中文字幕乱码久久午夜不卡| 在线国产精品网| 免费在线观看av电影| 精品久久久久久国产| 国产成人a亚洲精v品无码| 浪潮色综合久久天堂| 欧美乱妇20p| 中文字幕人妻熟女人妻a片| www.爱久久| 亚洲嫩模很污视频| 青花影视在线观看免费高清| 在线看片一区| 国产激情久久久| 国产精品久久久久久久久毛片| 国产精品自在在线| 欧美日本国产精品| 欧美13一16娇小xxxx| 亚洲成人免费观看| 午夜欧美福利视频| 亚洲一二av| 亚洲丝袜av一区| 黄色a级片在线观看| 一区福利视频| 国产在线日韩在线| 日本高清视频www| 亚洲国产精品ⅴa在线观看| 亚洲天堂第一区| 成人片免费看| 欧美一区二区三区视频免费| 欧美大片免费播放器| 青青草原综合久久大伊人精品 | 蜜臂av日日欢夜夜爽一区| 91在线观看免费| 天堂网www中文在线| 亚洲视频香蕉人妖| 虎白女粉嫩尤物福利视频| 成人av在线播放| 亚洲欧美日韩图片| 精品亚洲永久免费| 精一区二区三区| 欧美精品二区三区四区免费看视频 | 亚洲日韩欧美视频一区| 久久久久久久久毛片| 日韩电影在线观看一区| 粉嫩av四季av绯色av第一区| 91露出在线| 色综合婷婷久久| 日本不卡视频一区| 亚洲自拍偷拍网| 国产精品视频不卡| 男人天堂网在线观看| 亚洲综合在线视频| 911av视频| 日本不卡免费一区| 57pao成人国产永久免费| 亚洲国产日韩在线观看| 中文字幕一区不卡| 手机看片福利盒子久久| 国产无遮挡裸体免费久久| 美女精品久久久| 91av久久久| 国产日韩欧美精品一区| 99re在线视频免费观看| 久久99精品久久久久久欧洲站 | 久久久www成人免费毛片| 美女精品一区二区| 日韩精品极品视频在线观看免费| 美女网站在线看| 亚洲成人a级网| 免费三片在线播放| 国产精品一卡二| 亚洲国产精品女人| 亚洲欧美久久精品| 日韩中文字幕网站| 奴色虐av一区二区三区| 久久亚洲欧美国产精品乐播| 一女被多男玩喷潮视频| 欧美人体视频| 欧美性视频网站| 亚洲三级黄色片| 一本色道综合亚洲| 手机免费看av| 免费成人性网站| 一区二区不卡在线视频 午夜欧美不卡' | 亚洲码国产岛国毛片在线| 999久久久精品视频| 欧美韩国一区| 国产乱码精品一区二区三区中文 | 欧美性高潮床叫视频| 素人fc2av清纯18岁| 天堂一区二区在线免费观看| 日韩av一区二区三区在线观看| jvid一区二区三区| www.午夜精品| 国内精品久久久久久久久久久| 亚洲激情自拍偷拍| 艳妇乳肉亭妇荡乳av| 国产精品普通话对白| 日韩欧美一区二区三区四区五区| 成人精品一区二区三区电影| 按摩亚洲人久久| 亚洲不卡免费视频| 欧美日韩国产激情| 日韩精品电影一区二区三区| 久久99国产乱子伦精品免费| 91成人综合网| 国产videos久久| 国产色综合天天综合网| 伊人福利在线| 亚洲精品一区久久久久久| 中文字幕网址在线| 亚洲精品国产视频| 亚洲成人日韩在线| 激情综合色播五月| 人人干视频在线| 成人a'v在线播放| www 成人av com| 美女100%一区| 欧美成人午夜免费视在线看片| 污污视频在线免费看| 欧美手机在线视频| 国产一级视频在线观看| 欧美激情综合五月色丁香小说| 女人扒开双腿让男人捅 | 成人免费电影网址| 成人欧美一区二区| 成人自拍视频网| 国内精品久久久久久中文字幕| 国产在线观看网站| 精品动漫一区二区三区在线观看| 中国黄色一级视频| 欧美日韩国产综合新一区 | 雨宫琴音一区二区三区| 欧美性天天影院| 911亚洲精品| 国产精品免费视频xxxx| 九色porny自拍视频在线观看 | 日韩在线观看免| 91丨九色丨蝌蚪丨老版| 国产精品久久久久久久99| 久久黄色影院| 国产午夜大地久久| 欧美xxx在线观看| 性欧美videosex高清少妇| 精品国内亚洲2022精品成人| 成人免费自拍视频| 日韩不卡视频在线观看| 91超碰中文字幕久久精品| 在线观看三级视频| 日韩在线观看网址| 国产女人在线视频| 日韩精品中文字幕在线观看| 亚洲第一免费视频| 欧美精品v日韩精品v韩国精品v| 中文字幕精品无码一区二区| 婷婷综合另类小说色区| 精品肉丝脚一区二区三区| 成人欧美一区二区三区视频网页| 一区二区三区伦理片| 99久久精品国产观看| 成年女人免费视频| 国产成人免费视频网站| caoporm在线视频| 久久国产剧场电影| 亚洲另类第一页| 美女视频黄a大片欧美| 亚洲不卡视频在线| 日韩精品乱码av一区二区| 日韩精品视频久久| 模特精品在线| 国产在线观看福利| 欧美综合二区| 任你操这里只有精品| 久久这里只有| 另类小说第一页| 日本午夜一区二区| 欧美第一页浮力影院| 卡一卡二国产精品| 三级性生活视频| 国产成人a级片| 日韩久久久久久久久久久| 国产成人精品在线看| 国产精品果冻传媒| 91小视频免费观看| www.久久国产| 中文字幕va一区二区三区| 永久免费看片视频教学| 亚洲精品久久久久久国产精华液| 久久艹精品视频| 天天射综合影视| 亚洲中文一区二区| 欧美日韩在线播| 国产高潮在线观看| 亚洲第一精品自拍| 国内在线免费高清视频| 中文字幕视频在线免费欧美日韩综合在线看 | xxxxxx在线观看| 一区视频在线| 红桃av在线播放| 久久精品国产久精国产| 天天色天天干天天色| 成人黄色大片在线观看| 黄瓜视频污在线观看| 中文字幕av一区 二区| 欧美丰满艳妇bbwbbw| 欧美色视频日本高清在线观看| 久久久精品毛片| 欧美精品在线一区二区三区| 亚洲经典一区二区三区| 国产视频在线一区二区| av福利精品| 午夜精品一区二区三区在线播放| 日韩一区二区三区免费| 99精品国产高清在线观看| 亚洲美女久久| 好色先生视频污| 亚洲综合国产激情另类一区| 91丨九色丨蝌蚪| 99久久久国产精品免费蜜臀| 亚洲欧美va天堂人熟伦| 亚洲午夜久久久久久久久久久| 东京热一区二区三区四区| 欧美精品欧美精品系列| 欧美男男同志| 欧美精品免费在线观看| 久久久一本精品| 亚洲已满18点击进入在线看片| 久久中文资源| 自拍偷拍一区二区三区| 毛片一区二区| 激情av中文字幕| 欧美激情资源网| 国产99久久久| 日韩欧美精品在线视频| 福利成人在线观看| 韩国一区二区电影| 国产精品色婷婷在线观看| 欧美一区观看| 亚洲国产免费看| 久久无码人妻一区二区三区| 中文在线一区二区| 看片网址国产福利av中文字幕| 91精品国产一区二区三区| jizz日韩| 国产成人精品视频在线| 欧美顶级毛片在线播放| 青青草视频在线视频| 久久成人久久爱| 午夜时刻免费入口| 欧美日韩免费看| 天堂av在线免费| 国内精久久久久久久久久人| 日韩成人18| 日本不卡一区二区三区四区| 日本视频免费一区| 无码h肉动漫在线观看| 香蕉加勒比综合久久| www.五月天激情| 毛片精品免费在线观看| 久久影视精品| 亚洲一区二区在线看| 丝袜脚交一区二区| 欧美日韩高清丝袜| 精品久久久久久久久久久久久| 亚洲经典一区二区| 久久久久久国产免费 | 蜜臀av性久久久久av蜜臀妖精| www.自拍偷拍| 色婷婷av一区二区三区大白胸| 香港三日本三级少妇66| 69av在线播放| 久草成人在线| 成人久久久久久久久| 久久久久久久免费视频了| 日韩特级黄色片| 亚洲女人天堂av| 国产一区一一区高清不卡| 日韩片电影在线免费观看| 日本不卡一区二区三区| 91无套直看片红桃在线观看| 欧美视频三区在线播放| 视频免费一区| 91亚洲精华国产精华| 欧美国产91| av2014天堂网| 欧美综合色免费| 国内精品久久久久久野外| 亚洲最大福利网| 日韩天堂av| 人人妻人人藻人人爽欧美一区| 91福利精品第一导航| 免费在线午夜视频| 99se婷婷在线视频观看| 雨宫琴音一区二区在线| 无码h肉动漫在线观看| 在线观看不卡一区| 91小视频xxxx网站在线| 国产精品国产精品国产专区不卡| 9色精品在线| 成人黄色免费网址| 91精品国产入口| 爱搞国产精品| 亚洲精品乱码视频| 国产一区二区在线观看视频| www.国产成人| 中文一区二区视频| 深夜激情久久| 免费在线观看毛片网站| 国产精品成人在线观看| 亚洲乱码精品久久久久..| 青青草精品毛片| 91精品国产成人观看| 少妇饥渴放荡91麻豆| 欧美日韩国产精品自在自线| 黄色在线观看视频网站| 日韩欧美在线电影| 成人免费va视频| 中文字幕永久在线观看| 欧美激情视频网| 国产乱码精品一区二区三区四区| www激情五月| 色综合天天综合网天天狠天天| 在线网址91| 欧洲久久久久久| 国产999精品久久| 伊人22222| 456亚洲影院| 欧美视频在线观看|