gpt4 book ai didi

c# - 使用 ASP.NET MVC 应用程序从 HTTPS 重定向

转载 作者:可可西里 更新时间:2023-11-01 02:59:23 24 4
gpt4 key购买 nike

我使用的是 ASP.NET MVC 2,并且有一个通过 HTTPS 保护的登录页面。为确保用户始终通过 SSL 访问这些页面,我向 Controller 添加了属性 [RequireHttps]。这可以完美地完成工作。

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

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

我是不是想得太多了,是否有一个简单的解决方案让我眼前一亮?还是稍微复杂一点?

最佳答案

经过一番挖掘后,我沿着自己的方向前进,因为似乎没有一个好的内置解决方案(如前所述,对于 MVC2 应用程序有一个很好的解决方案,形式为[RequireHttps])。灵感来自 çağdaş this problem 的解决方案我适应了以下代码:

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 协议(protocol)重定向到 Controller 上的 Index 操作,它将重定向到 HTTP。它只允许对 Index ActionResult 进行 HTTP 访问。

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

关于c# - 使用 ASP.NET MVC 应用程序从 HTTPS 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com