c# - OnActionExecuting Loop MVC -


im using action filter 1 job in project. want if user's ip equals ip, go index without seeing login page. if ip different want redirect him login page. in login page ask password , id. have problem redirecting login page. here code, how can fix loop?

filter

public class intranetaction : actionfilterattribute {     private const string localip = "192.168";      public override void onactionexecuting(actionexecutingcontext filtercontext)     {         var request = filtercontext.requestcontext.httpcontext.request;          string ip1 = request.userhostaddress;         string shortlocalip;         if (ip1 != null && ip1.contains("."))         {             string[] ipvalues = ip1.split('.');             shortlocalip = ipvalues[0] + "." + ipvalues[1];         }         else         {             shortlocalip = "192.168";         }          //var ip2 = request.servervariables["local_addr"];         //var ip3 = request.servervariables["server_addr"];          if (shortlocalip != localip)         {              filtercontext.result = new redirecttorouteresult(new routevaluedictionary(new             {                 controller = "login", //todo - edit per controller , action                 action = "user"             }));          }         else         {             filtercontext.result = new redirecttorouteresult(new routevaluedictionary(new             {                 controller = "home", //todo - edit per controller , action                 action = "index"             }));         }          base.onactionexecuting(filtercontext);     } } 

login controller

public class logincontroller : controller {     // get: login     [intranetaction]     public actionresult user()     {                  return view();     }       public void checkauthentication(userlogininfo logininfo)     {                  bool isauthenticated = new ldapservicemanager().isauthenticated(logininfo);         if (isauthenticated)         {              //httpcontext.response.redirect("/home/index");             response.redirect("/home/index");             response.end();         }         else         {             response.redirect("/", false);         }              } } 

this loop in filter class. shortlocalip doesnt equal localip, goes login page goes inf loop

i think need view index in login controller.

if user ip , your ip equal go home/index otherwise go login/index.

your startup view login/user filter placed.

public class intranetaction : actionfilterattribute {     private const string localip = "192.168";      public override void onactionexecuting(actionexecutingcontext filtercontext)     {         var request = filtercontext.requestcontext.httpcontext.request;          string ip1 = request.userhostaddress;         string shortlocalip;         if (ip1 != null && ip1.contains("."))         {             string[] ipvalues = ip1.split('.');             shortlocalip = ipvalues[0] + "." + ipvalues[1];         }         else         {             shortlocalip = "192.168";         }          //var ip2 = request.servervariables["local_addr"];         //var ip3 = request.servervariables["server_addr"];          if (shortlocalip != localip)         {              filtercontext.result = new redirecttorouteresult(new routevaluedictionary(new             {                 controller = "login", //todo - edit per controller , action                 action = "index"             }));          }         else         {             filtercontext.result = new redirecttorouteresult(new routevaluedictionary(new             {                 controller = "home", //todo - edit per controller , action                 action = "index"             }));         }          base.onactionexecuting(filtercontext);     } } 

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -