Bir önceki yazımda web api metodlarımıza gelen tüm isteklere cevap dönüyorduk. Peki sadece önceden tanımladığımız iplerin web api metodlarına erişmesini nasıl sağlayabiliriz.

Öncelikle projemize sağ tıklayıp Add -> Class deyip Class ismine IPValidationAttribute yazıyoruz.
Ardından aşağıdaki kod parçasını oluşturduğumuz class içine koplayaıp yapıştıralım.

  public class IPValidationAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            var ips = new List<string>();
            ips.Add("127.0.0.1");
            ips.Add("::1");

            var context = actionContext.Request.Properties["MS_HttpContext"] as System.Web.HttpContextBase;

            string userIP = context.Request.UserHostAddress;
            try
            {
                ips.AsQueryable().First(x => x == userIP);
            }
            catch (Exception)
            {
                actionContext.Response =
                   new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
                   {
                       Content = new StringContent("Tanımlanmayan IP Adresi")
                   };
                return;
            }
        }
    }

Son olarak Global.asax içindeki Application_Start() metoduna

GlobalConfiguration.Configuration.Filters.Add(new IPValidationAttribute());

kod parçasını ekliyoruz. Çalıştıdığımızda web api sadece localhost tarafından gönderilen isteklere cevap dönecektir. Hangi ip adreslerine izin vereceksek OnActionExecuting() metodu içindeki ips listesine bu ipleri eklemeiz gerekmektedir.


Yazar : Emrah Kahraman

Bilgisayar Mühendisi

ASP.NET Web Api 2 Kullanımı – İzin Verilen IP Listesinden Restful İsteği Yazısı için Yorum Yapabilirsiniz

Sponsor
Alexa
Hakkımda
Bağlantılar