Quiero mi página de inicio de sesión sea única SSL:ASP.NET MVC: ¿Cómo deshabilitar automáticamente [RequireHttps] en localhost?
[RequireHttps]
public ActionResult Login()
{
if (Helper.LoggedIn)
{
Response.Redirect("/account/stats");
}
return View();
}
Pero es obvio que no funciona en el servidor local cuando desarrollo y depurar mi aplicación. No quiero usar IIS 7 con certificados SSL, ¿cómo puedo desactivar automáticamente el atributo RequireHttps?
actualización
Sobre la base de información proporcionada por los usuarios stackoverflow y ASP.NET MVC 2 código fuente creé la siguiente clase que resuelve el problema.
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);
}
}
y se usa así:
[RequireSSL]
public ActionResult Login()
{
if (Helper.LoggedIn)
{
Response.Redirect("/account/stats");
}
return View();
}
Si usted busca desbordamiento de pila de "RequireHttps" la cuestión se ha pedido un par de veces, por lo que una gran cantidad de información con respecto a la solución. Sin embargo, es una buena pregunta, no he usado ese atributo todavía, pero puedo ver que es un problema de inmediato. –
Tienes razón. El problema ha sido resuelto y actualicé mi publicación principal con la clase que me ayudó. – Alex