asp.net-mvc – 在ASP.NET MVC中在HTTP和HTTPS之间移动
发布时间:2020-05-24 09:51:59 所属栏目:asp.Net 来源:互联网
导读:所以我找到了[RequiresHttps]属性,但是一旦你在https中你的那种卡在那里,那么试着能够对一个网址(和方案)进行操作我发现我最终不得不创建我自己的ExtendedController为不使用[RequireHttps]的操作恢复为http. 只是想知道我在做什么是好的还是有更好的方法? p
|
所以我找到了[RequiresHttps]属性,但是一旦你在https中你的那种卡在那里,那么试着能够对一个网址(和方案)进行操作我发现我最终不得不创建我自己的ExtendedController为不使用[RequireHttps]的操作恢复为http. 只是想知道我在做什么是好的还是有更好的方法? public class ExtendedController : Controller
{
protected virtual void HandleHttpRequest(AuthorizationContext filterContext)
{
if (!string.Equals(filterContext.HttpContext.Request.HttpMethod,"GET",StringComparison.OrdinalIgnoreCase))
{
throw new InvalidOperationException("Cannot post between https and http.");
}
string url = "http://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl;
filterContext.Result = new RedirectResult(url);
}
protected override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
object[] attributes = filterContext.ActionDescriptor.GetCustomAttributes(true);
if (!attributes.Any(a => a is RequireHttpsAttribute))
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (filterContext.HttpContext.Request.IsSecureConnection)
{
this.HandleHttpRequest(filterContext);
}
}
}
}
解决方法你所拥有的是语法上正确的,但建议是创建一个新的Action过滤器,它继承自默认的RequireHttpsAttribute,并使用一个参数在http和https之间切换.public class RequireHttpsAttribute : System.Web.Mvc.RequireHttpsAttribute
{
public bool RequireSecure = false;
public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext)
{
if (RequireSecure)
{
base.OnAuthorization(filterContext);
}
else
{
// non secure requested
if (filterContext.HttpContext.Request.IsSecureConnection)
{
HandleNonHttpRequest(filterContext);
}
}
}
protected virtual void HandleNonHttpRequest(AuthorizationContext filterContext)
{
if (String.Equals(filterContext.HttpContext.Request.HttpMethod,StringComparison.OrdinalIgnoreCase))
{
// redirect to HTTP version of page
string url = "http://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl;
filterContext.Result = new RedirectResult(url);
}
}
}
然后,在您的操作方法或控制器上,您将使用: [RequireHttps (RequireSecure = true)] … 要么 [RequireHttps (RequireSecure = false)] (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在ASP.NET gridview的标题中放置一个按钮?
- asp.net-mvc – 通过Gitignore递归地包含Nuget DLL
- 用于Asp.Net应用程序的SSO的最佳方法,从具有多个ADFS的外部
- 在ASP.Net MVC中访问“应用程序”对象来存储应用程序范围的
- .net – 为什么使用DirectoryEntry对LDAP进行身份验证会间歇
- asp.net-mvc – SquishIt vs. MVC 4.0 Bundler
- ASP.NET路由:令牌之间的字面子段和来自文字子段的字符的路
- asp.net – MVC5认证中的“和主域之间的信任关系失败”
- Asp.net复选框和html数据属性
- .net – RegularExpressionValidator使用除Regex之外的其他
推荐文章
站长推荐
- asp.net – 如何解决错误:当应用程序未在UserIn
- asp.net-mvc-3 – ASP.NET MVC 3认证/授权
- asp.net – 使用Html.TextBox添加css类
- asp.net-mvc – 为什么Partial View在MVC 5 Visu
- asp.net – 如何正确使用RegisterForEventValida
- asp.net – 如何使用SignalR的跨域连接(CORS –
- asp.net-mvc-3 – MVC 3使用RenderPage更改视图中
- asp.net – 是否需要在web.config中保护连接字符
- 在ASP.NET中导入一个类
- asp.net-mvc – requestValidationMode =“2.0”
热点阅读
