直接在防火牆處理此規則會更容易。
作爲替代方案,您可以在您的IIS級別配置IP Security並通過客戶端IP進行篩選。
但如果你有防火牆無法控制,你可以寫一個自定義的授權屬性,將檢查輸入的IP地址,並允許/拒絕這個請求:
public class IpBasedAuthorizeAttribute: AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var ip = httpContext.Request.UserHostAddress;
return IsAllowed(ip);
}
private bool IsAllowed(string ip)
{
// TODO: do your checks here and return true or false
// depending on whether the IP address is allowed to
// access the application or not
throw new NotImplementedException();
}
}
,然後你既可以裝點各個控制器/或者將其註冊爲全局授權屬性,如果您希望它適用於所有請求:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new IpBasedAuthorizeAttribute());
}
完美!這正是我正在尋找的。謝謝! –