使用ASP.NET MVC App重定向HTTPS

我正在使用ASP.NET MVC 2,并且有一个通过HTTPS保护的登录页面。 为了确保用户始终通过SSL访问这些页面,我已将属性[RequireHttps]添加到控制器。 这完美地完成了这项工作。

当他们成功登录后,我想将它们重定向回HTTP版本。 但是,没有[RequireHttp]属性,我正在努力解决如何实现这一目标。

增加的(潜在的)复杂性是生产中的网站托管在域的路由上,但是为了开发和测试目的,它位于子目录/虚拟目录/应用程序中。

我是否过度思考这个问题,是否有一个简单的解决方案让我盯着我? 还是有点复杂?

经过一番挖掘后,我开始自己动手,因为似乎没有一个好的内置解决方案(如前所述,以[RequireHttps]的forms有一个很棒的MVC2应用程序) )。 受çağdaş解决这个问题的启发,我适应了以下代码:

 public class RequireHttp : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { // If the request has arrived via HTTPS... if (filterContext.HttpContext.Request.IsSecureConnection) { filterContext.Result = new RedirectResult(filterContext.HttpContext.Request.Url.ToString().Replace("https:", "http:")); // Go on, bugger off "s"! filterContext.Result.ExecuteResult(filterContext); } base.OnActionExecuting(filterContext); } } 

我现在可以将它添加到我的Controller方法中,并且它(看似)按预期运行。 如果我从HTTPS协议重定向到我的控制器上的索引操作,它将重定向到HTTP。 它只允许HTTP访问Index ActionResult。

 [RequireHttp] public ActionResult Index() { return View(); }