im с использованием фильтра действий для выполнения одной работы в моем проекте. Я хочу сделать это, если ip пользователя равен моему ip, он пойдет в индекс без просмотра страницы входа. Если его ip отличается, я хочу перенаправить его на страницу входа. На странице входа я спрашиваю пароль и идентификатор. У меня проблема с перенаправлением на страницу входа. Вот его мой код, как я могу исправить этот цикл?OnActionExecuting Loop MVC
ФИЛЬТР
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 as per you controller and action
action = "User"
}));
}
else
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
{
controller = "Home", //TODO - Edit as per you controller and action
action = "Index"
}));
}
base.OnActionExecuting(filterContext);
}
}
Войти Контроллер
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);
}
}
}
Этот цикл в моем классе фильтра. shortLocalIP не соответствует моему LOCALIP, он переходит на мою страницу входа, но он переходит в inf loop
Снимите '[IntranetAction]' атрибут из вашего 'User)' метода –
(Но если я удалить этот атрибут, мой код не работает. Он всегда перенаправляется на мою страницу входа. – Berkin
Ваш атрибут должен быть включен во все другие методы. В настоящее время происходит переход к методу 'User()', который запускает фильтр, который перенаправляет на метод 'User()', который запускает фильтр, который перенаправляет на метод 'User()', который ...... .. –