Si le contrôleur redirigé hérite de la même baseController
où nous remplaçons le OnActionExecuting
provoque une boucle récursive. Supposons que nous le redirigeons vers l'action de connexion du contrôleur de compte, alors l'action de connexion appellera OnActionExecuting
et redirigé vers la même action de connexion encore et encore
... Nous devrions donc appliquer un contrôle dans OnActionExecuting
pour vérifier si la requête provient du même contrôleur. Si c'est le cas, il ne faut pas rediriger l'action de connexion à nouveau :
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
try
{
// some condition ...
}
catch
{
if (filterContext.Controller.GetType() != typeof(AccountController))
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary {
{ "controller", "Account" },
{ "action", "Login" }
});
}
}
}