1. 程式人生 > 程式設計 >.NET6自定義WebAPI過濾器

.NET6自定義WebAPI過濾器

1、上程式碼

/// <summary>
    /// API白名單過濾器
    /// </summary>
    public class APIFilter : ActionFilterAttribute
    {
        /// <summary>
        /// 控制器中加了該屬性的方法中程式碼執行之前該方法。
        /// 所以可以用做許可權校驗。
        /// </summary>
        /// <param name="context"></param>
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            var vistorIp = context.HttpContext.Connection.RemoteIpAddress.ToString_();
            var whiteIp = AppsettingHelper.Get("WhiteIP");
            if (!string.IsNullOrEmpty(whiteIp))
            {
                List<string> whiteIpList = whiteIp.Split(',').ToList();
                if (!whiteIpList.Contains("*") && !whiteIpList.Contains(vistorIp))
                {
       http://www.cppcns.com
context.HttpContext.Response.StatusCode = 401; context.Result = new onResult(new { code = 401,msg = "非法IP" }); } } base.OnActionExecuting(context); } /// <summary> /// 控制器中加了該屬性的方法執行完成後才會來執行該方法。 /// </summary> /// <param name="context"></param> public override void OnActionExecuted(ActionExecutedContext context) { base.OnActionEx客棧
ecuted(context); } /// <summary> /// 控制器中加了該屬性的方法執行完成後才會來執行該方法。比OnActionExecuted()方法還晚執行。 /// www.cppcns.com</summary> /// <param name="context"></param> /// <param name="next"></param> /// <returns></returns> public override Task OnResultExecutionAsync(ResultExecutingContext context,ResultExecutionDelegate next) { return base.OnResultExecutionAsync(context,next); } }

2、使用

    [Route("api/[controller]/[action]")]
    [ApiController]
    [APIFilter]
    public class YangController : BaseController

到此這篇關於.NET6自定義WebAPI過濾器的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援我們。