我的WebAPI 2应用程序中有一些操作方法,我想禁用远程访问(计划管理任务)。其他行动方法应公开。在这种情况下ActionFilter
是最好的选择吗?
答案 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 API和Scope 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
}
}