asp.net-mvc – ASP.NET MVC:如何在localhost上自动禁用[RequireHttps]?
发布时间:2020-05-23 14:08:26 所属栏目:asp.Net 来源:互联网
导读:我希望我的登录页面只能是SSL: [RequireHttps] public ActionResult Login() { if (Helper.LoggedIn) { Response.Redirect(/account/stats); } return View(); } 但是
|
我希望我的登录页面只能是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派生一个新属性,并覆盖HandleNonHttpsRequestprotected override void HandleNonHttpsRequest(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.Request.Url.Host.Contains("localhost"))
{
base.HandleNonHttpsRequest(filterContext);
}
}
HandleNonHttpsRequest是抛出异常的方法,在这里我们正在做的不是调用它,如果主机是localhost(和杰夫说,在他的评论中,你可以将其扩展到测试环境或实际上任何其他你想要的异常)。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-web-api – 交叉原始SignalR连接在协商后停止
- asp.net – 由TaskScheduler和SynchronizationContext混淆同
- asp-classic – 从Classic ASP执行存储过程
- 在ASP.NET MVC中测试HtmlHelpers
- asp.net – 转换为VS 2015.1中的Web应用程序
- asp.net – NuGet:’X’已经有一个依赖定义为’Y’
- asp.net – 加密ASP .NET 2.0和SQL Server 2005中的工资值
- asp.net-mvc – 具有区域的Url.Action()返回空字符串
- oauth-2.0 – 在MVC6应用程序中的OAuth令牌到期
- asp.net – IIS在编译的.net站点中查找.cs文件
推荐文章
站长推荐
热点阅读
