Asp.net mvc ASP.NET MVC要求TTPS

Asp.net mvc ASP.NET MVC要求TTPS,asp.net-mvc,ssl,asp.net-mvc-2,https,asp.net-mvc-futures,Asp.net Mvc,Ssl,Asp.net Mvc 2,Https,Asp.net Mvc Futures,如何使用ASP.NET MVC 2 Preview 2 RequireHttps属性 我想防止将不安全的HTTP请求发送到操作方法。我想自动重定向到HTTPS MSDN: 如何使用此功能?我猜: [RequireHttps] //apply to all actions in controller public class SomeController { //... or ... [RequireHttps] //apply to this action only pu

如何使用ASP.NET MVC 2 Preview 2 RequireHttps属性

我想防止将不安全的HTTP请求发送到操作方法。我想自动重定向到HTTPS

MSDN:

如何使用此功能?

我猜:

[RequireHttps] //apply to all actions in controller
public class SomeController 
{
  //... or ...
  [RequireHttps] //apply to this action only
  public ActionResult SomeAction()
  {
  }

}
我猜:

[RequireHttps] //apply to all actions in controller
public class SomeController 
{
  //... or ...
  [RequireHttps] //apply to this action only
  public ActionResult SomeAction()
  {
  }

}

我认为您需要为此推出自己的
actionfilteratAttribute

public class RedirectHttps : ActionFilterAttribute {
   public override void OnActionExecuting(ActionExecutingContext filterContext) {
        if (!filterContext.HttpContext.Request.IsSecureConnection) {
            filterContext.Result = 
                new RedirectResult(filterContext.HttpContext.Request.Url.
                    ToString().Replace("http:", "https:"));
            filterContext.Result.ExecuteResult(filterContext);
        }
        base.OnActionExecuting(filterContext);
    }
}
然后在控制器中:

public class HomeController : Controller {

    [RedirectHttps]
    public ActionResult SecuredAction() {
        return View();
    }
}

你可能也需要阅读。

我想你需要为此推出自己的
actionfilteratAttribute

public class RedirectHttps : ActionFilterAttribute {
   public override void OnActionExecuting(ActionExecutingContext filterContext) {
        if (!filterContext.HttpContext.Request.IsSecureConnection) {
            filterContext.Result = 
                new RedirectResult(filterContext.HttpContext.Request.Url.
                    ToString().Replace("http:", "https:"));
            filterContext.Result.ExecuteResult(filterContext);
        }
        base.OnActionExecuting(filterContext);
    }
}
然后在控制器中:

public class HomeController : Controller {

    [RedirectHttps]
    public ActionResult SecuredAction() {
        return View();
    }
}

您可能也想阅读。

这似乎确实阻止了HTTP请求,但它不会重定向到HTTPS.No。这可能只是Visual Studio的ASP.NET开发服务器的一个问题。ASP.NET MVC仅在生产中需要HTTP:这可能是一个基本问题,因为读取和
post
请求也会被加密,但想知道我是否也应该在post中装饰
RequireHttps
?这似乎会阻止HTTP请求,但不会重定向到HTTPS。否。这可能只是Visual Studio的ASP.NET开发服务器的一个问题。ASP.NET MVC RequireHttps仅在生产中使用:这可能是一个基本问题,因为read和
post
请求也会被加密,但想知道我是否也应该在post中装饰
RequireHttps
?在将此添加到用于post方法的操作时要小心。@Carl为什么?因为post数据丢失了?如果您希望确保敏感数据不会通过非https发布,则不应处理该数据。@çağdaş您可能希望使用此方法更改方案-应比字符串替换更安全:在将其添加到用于POST方法的操作时要小心。@Carl为什么?因为post数据丢失了?如果您希望确保敏感数据不会通过非https发布,则不应处理该数据。@çağdaş您可能希望使用此方法更改方案-应该比字符串替换更安全: