の実際の使用例は、認証が要求された場合にのみスキームRequireHttpsAttribute
を適用することです。https://
すべての場合ではありません。RequireHttpsAttributeは、 IAuthenticationFilterインターフェイスのOnAuthenticationメソッドのみを実装します。
OnAuthenticationメソッドはInvokeAuthenticationFiltersメソッド内からのみ呼び出されるため、このRequireHttpsAttribute
属性は使用しません。
特定のコントローラーまたはアクションを適切に適用するためhttps://
に、以下に基づいて独自の属性を作成しますActionFilterAttribute
。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class EnforceHttpsActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
if (new[] { "GET", "HEAD" }.Any(verb => String.Equals(filterContext.HttpContext.Request.HttpMethod, verb, StringComparison.OrdinalIgnoreCase))) ;
{
string url = "https://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl;
filterContext.Result = new RedirectResult(url);
}
}
}
サイト全体に適用するために、サンプルアプリのインスタンスに使用したweb.configマークアップhttps://
に触発されることができます。*.azurewebsites.net
<system.webServer>
<rewrite>
<rules>
<rule name="HTTPS Redirect in Azure">
<match url="(.+)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTP_HOST}" pattern="^(.+)\.azurewebsites.net(.*)$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
</system.webServer>