首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用ASP.NET MVC应用程序重定向远离HTTPS

使用ASP.NET MVC应用程序重定向远离HTTPS
EN

Stack Overflow用户
提问于 2010-04-01 21:21:57
回答 1查看 7.3K关注 0票数 18

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

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

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

我是不是想得太多了,有没有简单的解决方案呢?或者它有一点复杂?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-01 22:09:15

经过一番钻研,我走上了我自己的路线,因为似乎没有一个很好的内置解决方案来解决这个问题(正如前面提到的,有一个很好的MVC2应用程序的解决方案,形式是[RequireHttps])。受çağdaşthis problem解决方案和我的启发,我想出了以下代码:

代码语言:javascript
复制
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);
    }
}

我现在可以将它添加到我的控制器方法中,它的行为(看起来)与预期的一样。如果我从HTTPS协议重定向到控制器上的Index操作,它将重定向到HTTP。它只允许通过超文本传输协议访问索引ActionResult。

代码语言:javascript
复制
[RequireHttp]
public ActionResult Index() {
    return View();
}
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2560615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档