Je veux que ma page de connexion SSL pour être seulement:ASP.NET MVC: Comment désactiver automatiquement [RequireHttps] sur localhost?
[RequireHttps]
public ActionResult Login()
{
if (Helper.LoggedIn)
{
Response.Redirect("/account/stats");
}
return View();
}
Mais évidemment, il ne fonctionne pas sur localhost quand je développe et déboguer mon application. Je ne veux pas utiliser IIS 7 avec des certificats SSL, comment puis-je désactiver automatiquement l'attribut RequireHttps?
Mise à jour
Sur la base des informations fournies par les utilisateurs StackOverflow et le code source ASP.NET MVC 2 J'ai créé la classe suivante qui résout le problème.
public class RequireSSLAttribute : FilterAttribute, IAuthorizationFilter
{
public virtual void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (!filterContext.HttpContext.Request.IsSecureConnection)
{
HandleNonHttpsRequest(filterContext);
}
}
protected virtual void HandleNonHttpsRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.Url.Host.Contains("localhost")) return;
if (!String.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))
{
throw new InvalidOperationException("The requested resource can only be accessed via SSL");
}
string url = "https://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl;
filterContext.Result = new RedirectResult(url);
}
}
Et il est utilisé comme ceci:
[RequireSSL]
public ActionResult Login()
{
if (Helper.LoggedIn)
{
Response.Redirect("/account/stats");
}
return View();
}
Si vous recherchez Stack Overflow pour « RequireHttps » la question a été posée plusieurs fois, donc beaucoup d'informations sur la solution. C'est une bonne question cependant, je n'ai pas encore utilisé cet attribut mais je peux voir que c'est un problème tout de suite. –
Vous avez raison. Le problème a été résolu et j'ai mis à jour mon post principal avec la classe qui m'a aidé. – Alex