【问题标题】:OData endpoint: Is it possible to edit document serviceOData 端点:是否可以编辑文档服务
【发布时间】:2018-11-07 19:52:38
【问题描述】:

亲爱的,

我设计了一个 OData 端点,遵循这个 https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-endpoint 我已经完成了它,但我有一个约束:对于所有 API 功能,标题必须包含一个授权密钥。这是在任何地方完成的,但在服务文档中。服务文档就是你在查看 URL https://SITE/api/v1 时得到的:

{"@odata.context":"http://SITE/api/v1/$metadata","value":[{"name":"things","kind":"EntitySet","url":"things"},{"name":"others","kind":"EntitySet","url":"others"}]}

那么,你知道这样的文件服务是如何产生的吗?是否可以编辑它?甚至,有没有办法在这样的文档服务中检查标题? 提前感谢您的帮助,

亲切的问候,

【问题讨论】:

    标签: model-view-controller http-headers odata


    【解决方案1】:

    使用以下模块自行解决:

    using System;
    using System.Linq;
    using System.Web;
    
    namespace Api.Modules
    {
        public class AuthorizationModule : IHttpModule
        {
            public void Dispose(){}
    
            private void Context_Authorization(object sender, EventArgs e)
            {
                HttpApplication application = (HttpApplication)sender;
                if (!IsAuthorized(application.Context))
                {
                    application.Context.Response.Status = "403 Forbidden";
                    application.Context.Response.StatusCode = 403;
                    application.CompleteRequest();
                }
            }
    
            public bool IsAuthorized(HttpContext context)
            {
                if (!HttpContext.Current.Request.Headers.AllKeys.Contains("Authorization"))
                    return false;
    
                string authHeader = HttpContext.Current.Request.Headers["Authorization"];
    
                if (!authHeader.Equals(Properties.Resources.Authorization_Key))
                {
                    return false;
                }
                return true;
            }
    
    
            public void Init(HttpApplication context)
            {
                context.AuthenticateRequest += new EventHandler(Context_Authorization);
            }
        }
    }
    

    如果有帮助的话……

    亲切的问候,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      相关资源
      最近更新 更多