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

时间:2013-12-23 18:39:21

标签: c# asp.net-web-api

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

2 个答案:

答案 0 :(得分:10)

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

本地:

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

并获得保障:

[EnableCors(origins: "http://localhost")]
public class ValuesController : ApiController
{
......
}

您可以在下一个链接中找到更多详细信息:CORS support for ASP.NET Web APIScope Rules for [EnableCors]

答案 1 :(得分:4)

FROM book“Pro ASP.NET MVC 4 4th edition”:

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 
    } 
}