使用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(); }
- 静态图像找不到控制器路径? asp.net mvc路由问题?
- 执行提交(回发)并使用ASP.net MVC重定向
- 如何为ASP.NET MVC 5创建dependency injection?
- ASP.NET MVC – 填充常用的下拉列表
- 将global.asax迁移到ASP.NET 5
- asp.net mvc c#随机生成相同的数字
- 为什么我可以使用简写“而不是实际类的名称,“?
- 同时访问MVC .NET上的数据
- ‘Compare’是’System.ComponentModel.DataAnnotations.CompareAttribute’和’System.Web.Mvc.CompareAttribute’之间的模糊引用。