Je vois une boucle de redirection de nos serveurs de production lorsque nous activons l'attribut suivant sur une classe de contrôleur:Filtre ASP.NET MVC action Redirect boucle
public class TestRedirectHttpsAttribute : RedirectHttpsAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (Convert.ToBoolean(ConfigurationManager.AppSettings["TestSecureEnabled"] ?? bool.FalseString))
{
base.OnAuthorization(filterContext);
}
}
}
public class RedirectHttpsAttribute : FilterAttribute, IAuthorizationFilter
{
public virtual void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (!filterContext.HttpContext.Request.IsSecureConnection)
{
UriBuilder uriBuilder = new UriBuilder(filterContext.HttpContext.Request.Url);
uriBuilder.Scheme = "https";
uriBuilder.Port = -1; // Don't inject port
filterContext.Result = new RedirectResult(uriBuilder.ToString());
}
}
}
Je sais ce qui est similaire à la question - Redirect loop with SSL action filter in ASP.NET MVC mais On l'a demandé en février et j'espérais que quelqu'un pourrait avoir une meilleure solution. La solution pour la question dans le lien était de rediriger à partir d'une action dans le contrôleur mais si nous voulons rediriger toutes les actions vers HTTPS, nous devrions nous assurer qu'il a été appelé dans chaque plutôt que d'appliquer un FilterAttribute personnalisé au contrôleur.
Remarque: Ce code fonctionne à partir de nos environnements de développement utilisant des certificats SSL factices.
J'ai peut-être mal compris et je devrais faire autre chose, si c'est le cas, veuillez accepter mes excuses.