1. 程式人生 > 其它 >AspNetCore自定義中介軟體

AspNetCore自定義中介軟體

中介軟體經常用定義好的,但是有的時候迫於業務需求必須自定義一些中介軟體,比如:

①當每次請求都需要token驗證是否有效時可以在中介軟體直接攔截進行驗證,而不是用過濾器,這樣的話就不需要修改過多的程式碼也可以減少系統的開銷;

②把某個請求加上響應的頭部;(返回檔案流時,拿不到檔名可以在響應頭部加上檔名)

public class AddResponseHeaderMiddleware
    {private readonly RequestDelegate _next;
        public AddResponseHeaderMiddleware(RequestDelegate requestDelegate)
        {
            _next 
= requestDelegate; } public async Task InvokeAsync(HttpContext context) {        //在請求頭部新增資訊 if (context.Request.Path.Value.Contains("/ExportNewExcel")) { context.Response.Headers.Add("Title", $"{title}.xlsx"); } if
(context.Request.Path.Value.Contains("/token")) { var token= context.Request.Query["token"].ToString(); //驗證token          //如果無效直接返回;          //context.Response.StatusCode = 200;          //context.Response.ContentType = "application/json; charset=utf-8";          //await context.Response.WriteAsync(JsonConvert.SerializeObject(new { Status = 15, Msg = "沒有許可權操作" }));
}         //不做任何處理傳遞給下一個中介軟體 await _next.Invoke(context); } }

註冊中介軟體:

 app.UseMiddleware<AddResponseHeaderMiddleware>();

注意先後的順序。