仅允许来自WebAPI 2中本地计算机的请求

Mik*_*ole 5 c# asp.net-web-api

我的WebAPI 2应用程序中有一些操作方法,我想禁用远程可访问性(计划的管理任务).其他行动方法应公开.ActionFilter在这种情况下,这是最好的选择吗?

Rre*_*Cat 10

我认为如果您的网站有本地网址,跨域资源共享(CORS)将对您有所帮助.您可以为您的安全行动应用公共行动的起源列表和仅本地起源.例如:

本地:

[EnableCors(Origins = new[] { "http://localhost", "http://sample.com" })]
public class ValuesController : ApiController
{
......
}
Run Code Online (Sandbox Code Playgroud)

和安全的:

[EnableCors(origins: "http://localhost")]
public class ValuesController : ApiController
{
......
}
Run Code Online (Sandbox Code Playgroud)

您可以通过下一个链接找到更多详细信息:ASP.NET Web API的CORS支持和[EnableCors]的范围规则


ope*_*wix 5

从书"Pro ASP.NET MVC 4第4版":

public class CustomActionAttribute : FilterAttribute, IActionFilter { 
    public void OnActionExecuting(ActionExecutingContext filterContext) { 
        if (filterContext.HttpContext.Request.IsLocal) { 
            filterContext.Result = new HttpNotFoundResult(); 
        } 
    }

    public void OnActionExecuted(ActionExecutedContext filterContext) { 
        // not yet implemented 
    } 
}
Run Code Online (Sandbox Code Playgroud)