asp.net-mvc – ASP.NET MVC:如何在localhost上自动禁用[Requir
发布时间:2020-12-15 18:34:42 所属栏目:asp.Net 来源:网络整理
导读:我希望我的登录页面只能是SSL: [RequireHttps] public ActionResult Login() { if (Helper.LoggedIn) { Response.Redirect("/account/stats"); } return View(); } 但是当我开发和调试我的应用程序时,显然它在localhost上不起作用。我不想使用带有SSL证书
我希望我的登录页面只能是SSL:
[RequireHttps] public ActionResult Login() { if (Helper.LoggedIn) { Response.Redirect("/account/stats"); } return View(); } 但是当我开发和调试我的应用程序时,显然它在localhost上不起作用。我不想使用带有SSL证书的IIS 7,如何自动禁用RequireHttps属性? 更新 根据StackOverflow用户提供的信息和ASP.NET MVC 2源代码,我创建了以下类来解决问题。 public class RequireSSLAttribute : FilterAttribute,IAuthorizationFilter { public virtual void OnAuthorization(AuthorizationContext filterContext) { if (filterContext == null) { throw new ArgumentNullException("filterContext"); } if (!filterContext.HttpContext.Request.IsSecureConnection) { HandleNonHttpsRequest(filterContext); } } protected virtual void HandleNonHttpsRequest(AuthorizationContext filterContext) { if (filterContext.HttpContext.Request.Url.Host.Contains("localhost")) return; if (!String.Equals(filterContext.HttpContext.Request.HttpMethod,"GET",StringComparison.OrdinalIgnoreCase)) { throw new InvalidOperationException("The requested resource can only be accessed via SSL"); } string url = "https://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl; filterContext.Result = new RedirectResult(url); } } 它的用法如下: [RequireSSL] public ActionResult Login() { if (Helper.LoggedIn) { Response.Redirect("/account/stats"); } return View(); } 解决方法
最简单的方法是从RequireHttps派生一个新属性,并覆盖HandleNonHttpsRequest
protected override void HandleNonHttpsRequest(AuthorizationContext filterContext) { if (!filterContext.HttpContext.Request.Url.Host.Contains("localhost")) { base.HandleNonHttpsRequest(filterContext); } } HandleNonHttpsRequest是抛出异常的方法,在这里我们正在做的不是调用它,如果主机是localhost(和杰夫说,在他的评论中,你可以将其扩展到测试环境或实际上任何其他你想要的异常)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – System.NotSupportedException:不支持指定
- ASP.NET Core Razor视图中的递归
- vbscript – 经典ASP中的三重DES解密?
- asp.net-mvc – 在JS函数中使用T4MVC
- 会话状态ASP.Net的配置文件内存使用情况
- asp.net-mvc – 具有多个参数的ActionLink
- 为什么NuPack生成的NinjectMVC3.cs无法编译? (或者ASP.NET
- Asp.net动态验证器无法在Chrome或Safari中使用
- ASP.NET MVC EF 连接数据库(二)-----Model First
- 你所不知道的ASP.NET Core MVC/WebApi基础系列 (一)