• 在MVC的ApiController中实现统一校验


    在对外公布的Web API中,我们要实现合法性的校验。 每一个API都去写校验代码,有点那个...

    很自然的,我们写一个中间的基类,继承自  ApiController,并在统一调用入口进行校验,如果不合法,就给出不合法的信息。

    我使用的代码如下:

    using System;
    using System.Net;
    using System.Net.Http;
    using System.Threading.Tasks;
    using System.Web;

    using System.Web.Http; 

    public class _ApiController : ApiController {  

            public override System.Threading.Tasks.Task<HttpResponseMessage> ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext controllerContext, System.Threading.CancellationToken cancellationToken)
            {
                var httpContext = (HttpContextWrapper)controllerContext.Request.Properties["MS_HttpContext"];
                string sig = httpContext.Request["sig"];
                string client_ip = httpContext.Request.UserHostAddress;
                
                if (client_ip != "127.0.0.1")
                    return Task.Factory.StartNew(() => { return controllerContext.Request.CreateErrorResponse(HttpStatusCode.Forbidden, "错误的客户端地址。"); }, cancellationToken);
                if (sig != ".........")
                    return Task.Factory.StartNew(() => { return controllerContext.Request.CreateErrorResponse(HttpStatusCode.Forbidden, "错误的签名。"); }, cancellationToken);
                return base.ExecuteAsync(controllerContext, cancellationToken);
            }

     }

     

    红色的地方是我的纠结点。 

    参考文档:

    http://www.strathweb.com/2012/05/implementing-message-handlers-to-track-your-asp-net-web-api-usage/
  • 相关阅读:
    MARKDOWN测试文章
    忘记网站登录密码实现快速查看
    IDEA debug下取消后续操作
    GitHub上传文件
    注解学习
    异常
    快捷键
    Android反编译三件套 apktool 、dex2jar、jd-gui
    ILSpy反编译工具之C#反汇编
    MAVEN配置及Spring Tool Suite的Maven配置
  • 原文地址:https://www.cnblogs.com/cloudbeer/p/2706899.html
Copyright © 2020-2023  润新知