Http 仅允许一个操作在ASP.NET mvc 4、c上使用非安全连接#

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

在我的web应用程序中,我需要创建一个可以使用http非安全连接访问的操作。所有其他必须只能通过https访问。 我发现我可以为控制器和操作使用
[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标记您的操作