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
Post a Comment