混合的http/https网站

Pit*_*a.O 7 cloud asp.net-mvc https azure

到目前为止,我的https部署通常涉及使用https对整个站点的简单锁定,并在Web服务器上提供http-to-https重定向.

我现在计划在一个包含http和https页面的单个ASP.NET MVC站点(在云上).因此,该站点将有2个概念(非物理)区域,提供安全和非安全请求.

在配置方面,我已经为80和443设置了输入端口,并且该站点接受这两个请求.

有什么方法可以将协议转换为https,以进行属于安全区域的操作的任何调用吗?例如,动作过滤器可以执行的操作.

非常感谢.

编辑: 请注意,这样做的全部意图是避免在表单操作属性上使用绝对URL,因为可移植性问题以及用户将不会在浏览器上看到https://保证可视提示.

P

Ste*_*ock 7

您可能需要查看Microsoft 提供的MVC期货程序集,可在此处下载.

它有一个FilterAttribute,RequireSslFilterAttribute,允许您在控制器中轻松标记需要SSL的Action方法 - 例如

[RequireSsl(Redirect=true)]
public ActionResult LogOn()
{
  return View();
}
Run Code Online (Sandbox Code Playgroud)

可选的重定向参数将导致请求被重定向到相同的URL,但如果需要,则通过https而不是http.

警告:正如丹尼尔指出的那样,当你点击这个动作时,如果数据被发布到页面的非安全版本可能已经太晚了 - 它已经可能已经被破坏了,所以你仍然需要谨慎使用它并确保所有敏感数据都通过https发送.(我刚刚注意到你对丹尼尔的评论,你明白这一点,我会在这里留下警告给其他任何偶然发现这个的人!)

编辑:正如Luke所指出的,在MVC2中,此属性现在是核心框架的一部分,并重命名为[RequireHttps]