Http 仅允许一个操作在ASP.NET mvc 4、c上使用非安全连接#
在我的web应用程序中,我需要创建一个可以使用http非安全连接访问的操作。所有其他必须只能通过https访问。 我发现我可以为控制器和操作使用Http 仅允许一个操作在ASP.NET mvc 4、c上使用非安全连接#,http,asp.net-mvc-4,https,Http,Asp.net Mvc 4,Https,在我的web应用程序中,我需要创建一个可以使用http非安全连接访问的操作。所有其他必须只能通过https访问。 我发现我可以为控制器和操作使用[RequireHttps]属性 但是是否有类似于[allowttp]属性的东西 我不想设置所有控制器的动作[RequireHttps]属性。将[RequireHttps]放入控制器和[allowttp]放入一个可以访问的操作更容易。当然,如果此属性可用 我的意思是我们可以通过身份验证[授权]给控制器,对于某些操作,无需身份验证即可访问 正如您在Auth
[RequireHttps]
属性
但是是否有类似于[allowttp]
属性的东西
我不想设置所有控制器的动作[RequireHttps]
属性。将[RequireHttps]
放入控制器和[allowttp]
放入一个可以访问的操作更容易。当然,如果此属性可用
我的意思是我们可以通过身份验证<代码>[授权]给控制器,对于某些操作,无需身份验证即可访问 正如您在AuthorizeAttribute的源代码中所看到的,它检查AllowAnonymousAttribute的存在
bool skipAuthorization = filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), inherit: true)
|| filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), inherit: true);
因此,您可以从RequireHttps中删除自己的属性,并添加相同的检查,使其看起来像
if (!skipAuthorization && !filterContext.HttpContext.Request.IsSecureConnection)
{
HandleNonHttpsRequest(filterContext);
}
除了AllowAnonymousAttribute,您可以添加自己的AllowAttribute,并使用此新AllowAttribute标记您的操作