【.NET】WebAPI访问先查看登录状态,重写筛选器ActionFilterAttribute实现

  WebAPI有几个常用的筛选器,都是虚函数类型,只要重写了,就可以在方法、类、派生类使用,属于System.Net.Http.Filter。

  ActionFilterAttribute:Action操作筛选器,一般重写执行前,执行后的2个方法;

  AuthorizationFilterAttribute:授权筛选器,有请求授权时的方法;

  ExceptionFilterAttribute:异常筛选器,有引起异常的方法;

ActionFilterAttribute重写:

/// <summary>
    /// 执行操作前的过滤器(可以在方法、类、派生类使用)
    /// </summary>
    [AttributeUsageAttribute(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
    public class MyActionFilter : ActionFilterAttribute 
    {
        /// <summary>
        /// 操作筛选器之前
        /// </summary>
        /// <param name="actionContext"></param>
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            bool Login = true;
            var token = HttpUtility.ParseQueryString(actionContext.Request.RequestUri.Query).GetValues("token")[0].ToString();
            if (!string.IsNullOrEmpty(token))
            {
                //获取到token,再判断是否存在
                if (!ChkToken(token.ToString())) { Login = false; } 
            }
            else
            {
                Login = false;
            }

            if(!Login)
            {
                //请求返回结果
                string jsonString = "{"msg":"未登录","code":"-1"}";
                HttpResponseMessage reqMsg = new HttpResponseMessage { Content=new StringContent(jsonString,System.Text.Encoding.GetEncoding("UTF-8"), "application/json") };
                actionContext.Response = reqMsg;
            }
            base.OnActionExecuting(actionContext);
        }
    }

  

原文地址:https://www.cnblogs.com/laokchen/p/12355336.html