zoukankan      html  css  js  c++  java
  • Web API 授权筛选器

    方式一、全局认证

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服务
            config.Filters.Add(new ApiAuthorizeAttribute());
        }
    }
    

    方式二、局部认证

    在控制器前加认证特性[ApiAuthorizeAttribute],方法名前加认证特性

    [ApiAuthorizeAttribute]
    public class ValuesController : ApiController
    {
        [Authorize]
        public void Post([FromBody]string value)
        {
        }
    }
    

     以下为自定义授权筛选器文件

    /// <summary>
    /// 授权筛选器
    /// </summary>
    public class ApiAuthorizeAttribute : AuthorizeAttribute
    {
        protected override bool IsAuthorized(HttpActionContext actionContext)
        {
            var tokenHeader = from t in actionContext.Request.Headers where t.Key == "token" select t.Value.FirstOrDefault();
            if (tokenHeader != null)
            {
                string token = tokenHeader.FirstOrDefault();
                if (!string.IsNullOrEmpty(token))
                {
                    try
                    {
                        return true;
                    }
                    catch (Exception ex)
                    {
                        return false;
                    }
                }
            }
            return false;
        }
    
        /// <summary>
        /// 处理授权失败的请求
        /// </summary>
        protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
        {
            actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.OK, new
            {
                code = "3001",
                msg = "false",
                data = new { }
            }, "application/json");
        }
    }
    
  • 相关阅读:
    03-树3 Tree Traversals Again
    Utuntu下Xshell使用+vi使用
    CSDN总结的面试中的十大算法
    EDM(邮件营销)
    腾讯CDC谈扁平化设计
    Graph Search图谱搜索
    LBS 与 GPS 定位之间的区别
    中间件的理解
    夏梦竹谈Hive vs. HBase的区别
    维基百科上—数据仓库、数据挖掘、OLAP三者之间的区别
  • 原文地址:https://www.cnblogs.com/sntetwt/p/11760473.html
Copyright © 2011-2022 走看看