如何在基于ASP.NET MVC的站点中的某些页面上使用HTTPS?
史蒂夫桑德森有一个非常好的教程,如何在预览4上以干燥方式执行此操作:
http://blog.codeville.net/2008/08/05/adding-httpsssl-support-to-aspnet-mvc-routing/
预览5有更好/更新的方式吗?
如果您使用的是ASP.NET MVC 2 Preview 2或更高版本,现在可以使用:
[RequireHttps] public ActionResult Login() { return View(); }
但是,订单参数值得注意,如此处所述.
MVCFutures具有'RequireSSL'属性.
(感谢Adam 在你更新的博文中指出这一点)
如果您希望http://请求自动成为https://,请将其应用于您的操作方法,并使用'Redirect = true':
[RequireSsl(Redirect = true)]
另请参阅:仅限生产中的ASP.NET MVC RequireHttps
正如Amadiere所写,[RequireHttps]在MVC 2中用于输入 HTTPS 非常有用.但是,如果您只想对某些页面使用HTTPS,就像您所说的那样,MVC 2并没有给您任何爱 - 一旦将用户切换到HTTPS,他们就会被卡在那里直到您手动重定向它们.
我使用的方法是使用另一个自定义属性,[ExitHttpsIfNotRequired].当连接到控制器或操作时,如果出现以下情况,它将重定向到HTTP:
请求是HTTPS
[RequireHttps]属性未应用于操作(或控制器)
请求是GET(重定向POST会导致各种麻烦).
这里发布的内容太大了,但您可以在此处看到代码以及其他一些细节.
这是Dan Wahlin最近发表的一篇文章:
http://weblogs.asp.net/dwahlin/archive/2009/08/25/requiring-ssl-for-asp-net-mvc-controllers.aspx
他使用ActionFilter属性.