Я бы предложил не использовать напрямую IP-адреса в вашем коде - они, как правило, время от времени меняются.Создайте систему «зон», как во многих личных брандмауэрах.
Мое решение будет в основном так:
Создайте пользовательский атрибут авторизации
public class AuthorizeZone: AuthorizeAttribute
{
private string _zone;
public AuthorizeZone(string zoneName)
{
_zone = zoneName;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var zone = GetZoneIpMappingsFromXMLorDB_IdeallyCached(_zone);
return zone.ContainsIp(httpContext.Request.UserHostAddress); // implement by simple list or ip-mask
}
}
тогда выиспользуйте это следующим образом
[AuthorizeZone("Intranet")]
public ActionResult Foo()
{}
Ваши определения зон зависят от вас, используйте XML, базу данных, что угодно ...