AspNetCore自定義中介軟體
阿新 • • 發佈:2022-04-02
中介軟體經常用定義好的,但是有的時候迫於業務需求必須自定義一些中介軟體,比如:
①當每次請求都需要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>();
注意先後的順序。