0
我想爲單個頁面使用https而不是整個網站。 我的應用程序是在MVC3中。我用下面的代碼來完成這個。總是需要https到一個特定的路線,而不是整個網站
[RequireHttps]
public ViewResult YourAction()
但路由到我的特定行動後,整個網站運行在https下。 我想爲單個頁面使用https而不是整個網站。
我想爲單個頁面使用https而不是整個網站。 我的應用程序是在MVC3中。我用下面的代碼來完成這個。總是需要https到一個特定的路線,而不是整個網站
[RequireHttps]
public ViewResult YourAction()
但路由到我的特定行動後,整個網站運行在https下。 我想爲單個頁面使用https而不是整個網站。
我已經使用下面的代碼完成了它。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new LimitHttpsAttribute());
}
public class LimitHttpsAttribute : IAuthorizationFilter
{
private static Type ssl = typeof(RequireHttpsAttribute);
public void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (filterContext.HttpContext != null && filterContext.HttpContext.Request != null)
{
if (!filterContext.HttpContext.Request.IsSecureConnection ||
filterContext.HttpContext.Request.IsAuthenticated)
{
return;
}
if (!RequiresSSL(filterContext))
{
filterContext.Result = Unencrypted(filterContext.HttpContext.Request);
}
}
}
private bool RequiresSSL(AuthorizationContext filterContext)
{
return filterContext.ActionDescriptor != null ?
filterContext.ActionDescriptor.GetCustomAttributes(ssl, true).Length > 0
: false;
}
}
http://stackoverflow.com/questions/7846833/why-once-ssl-is-enabled-with-requirehttps-at-action-level-it-remains-enabled –
我沒有得到正確的回答,在鏈接中的示例中,如果我想要/或不想使用https,則必須在每個操作中編寫該屬性。任何人都可以提供更好的方法。 –
爲什麼不讓它在SSL下運行?就像Chuck Norris所說的那樣,在通過SSL做某些事情之後,通常情況下它真的錯誤地切換回未加密。 – Tim