ウェブサイト全体ではなく、1ページにhttpsを使用したい。私のアプリケーションはMVC3にあります。私はこれを達成するために以下のコードを使用しました。
[RequireHttps]
public ViewResult YourAction()
しかし、私の特定のアクションにルーティングした後、Webサイト全体がhttpsで実行されます。ウェブサイト全体ではなく、単一のページにhttpsを使用したい。
ウェブサイト全体ではなく、1ページにhttpsを使用したい。私のアプリケーションはMVC3にあります。私はこれを達成するために以下のコードを使用しました。
[RequireHttps]
public ViewResult YourAction()
しかし、私の特定のアクションにルーティングした後、Webサイト全体が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;
}
}