2011-12-29 205 views
3

是否有一種簡單的方法可以針對特定類型的UserAgents對ASP.NET MVC3中的操作方法應用過濾器?我有一個以不同方式咀嚼我們的黑客網絡。我可以在網絡/防火牆級別使用IP,子網等玩貓捉老鼠,但是我們希望爲諸如Squid之類的東西注入app級別的保證,因爲它們似乎具有某些出現的模式。不知道這將如何影響性能,但想知道是否有人做過這種方法。基於UserAgent的過濾器操作

在此先感謝。 doug

回答

3

您將不得不創建自定義操作過濾器。這裏是一個返回如果請求的用戶代理禁止一個HTTP 403的一個例子是一個基於Mozilla的瀏覽器:

public class UserAgentActionFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if (filterContext.HttpContext.Request.UserAgent.ToLowerInvariant().Contains("mozilla")) 
     { 
      filterContext.Result = new HttpStatusCodeResult(403); 
     } 

     base.OnActionExecuting(filterContext); 
    } 
} 

只要記住,用戶代理可以僞造,如果他們意識到,它們是如何被封鎖。

+0

這段代碼去哪裏?在控制器中?或者在Global.asax.cs中? – Civilian 2012-02-17 22:56:59

+1

該代碼會去你想要的地方。這只是一個類定義。該屬性必須放在控制器,操作或全局asax的寄存器全局過濾器方法中。 – doogle 2012-02-18 04:12:29

+0

有沒有任何理由在這裏打電話給基地? – beruic 2016-04-27 15:36:32