在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
我们先实现强制一个action使用https。这里写了一个RequireHttpsAttribute,它的作用是将非https连接转换成https连接,这样所有使用了RequireHttps这个filter的controller都会强制使用https连接。
1 using System.Web.Mvc;
2 3 namespace Snowdream.Demo.RequireHttps 4 { 5 public class RequireHttpsAttribute:AuthorizeAttribute 6 { 7 /// <summary> 8 /// 重写OnAuthorization方法 9 /// </summary> 10 /// <param name="filterContext"></param> 11 public override void OnAuthorization(AuthorizationContext filterContext) 12 { 13 // 如果已经是https连接则不处理,否则重定向到https连接 14 if (!filterContext.HttpContext.Request.IsSecureConnection) 15 { 16 // 获取当前请求的Path 17 string path = filterContext.HttpContext.Request.Path; 18 19 // 从web.config中获取host,也可以直接从httpContext中获取 20 string host = System.Configuration.ConfigurationManager.AppSettings["HostName"]; 21 22 // 从web.config中获取https的端口 23 string port = System.Configuration.ConfigurationManager.AppSettings["HttpsPort"]; 24 25 // 如果端口号为空表示使用默认端口,否则将host写成host:port的形式 26 if (port != null) 27 { 28 host = string.Format("{0}:{1}", host, port); 29 } 30 31 // 重定向到https连接 32 filterContext.HttpContext.Response.Redirect(string.Format("https://{0}{1}", host, path)); 33 } 34 } 35 } 36 } 37
1 <appSettings>
2 <add key="HostName" value="localhost"/> 3 <add key="httpsPort" value="443"/> 4 </appSettings> 5
1 [RequireHttps]
2 public ActionResult About() 3 { 4 return View(); 5 } 6
1 Html.ActionLink("Home", "Index", "Home")
1 Html.ActionLink("About", "About", "Home", "https", "localhost", "",null, null)
HTTPS 简介 本文适用于 ASP.NET MVC 1.0
|
请发表评论