@@ -3,6 +3,7 @@ using System.Collections.Generic;
33using System.Linq;
44using System.Threading.Tasks;
55using Microsoft.AspNetCore.Authorization;
6+ using Microsoft.AspNetCore.Http;
67using Microsoft.AspNetCore.Mvc.Filters;
78
89namespace { {packageName} }.Authentication
@@ -48,24 +49,29 @@ namespace {{packageName}}.Authentication
4849
4950 private void SucceedRequirementIfApiKeyPresentAndValid(AuthorizationHandlerContext context, ApiKeyRequirement requirement)
5051 {
51- {{#authMethods} }{ {#isApiKey} }
52- if (context.Resource is AuthorizationFilterContext authorizationFilterContext)
53- {
52+ {{#authMethods} }
53+ { {#isApiKey} }
54+ var httpContext = (context.Resource as AuthorizationFilterContext)?.HttpContext
55+ ?? context.Resource as HttpContext;
56+
57+ if (httpContext == null)
58+ return;
59+
5460{ {#isKeyInHeader} }
55- var apiKey = authorizationFilterContext.HttpContext .Request.Headers["{ {keyParamName} }"].FirstOrDefault();
61+ var apiKey = httpContext .Request.Headers["{ {keyParamName} }"].FirstOrDefault();
5662{ {/isKeyInHeader} }
5763{ {#isKeyInQuery} }
58- var apiKey = authorizationFilterContext.HttpContext .Request.Query["{ {keyParamName} }"].FirstOrDefault();
64+ var apiKey = httpContext .Request.Query["{ {keyParamName} }"].FirstOrDefault();
5965{ {/isKeyInQuery} }
6066{ {#isKeyInCookie} }
61- var apiKey = authorizationFilterContext.HttpContext .Request.Cookies["{ {keyParamName} }"] ?? null;
67+ var apiKey = httpContext .Request.Cookies["{ {keyParamName} }"] ?? null;
6268{ {/isKeyInCookie} }
63- if (requirement.PolicyName == "{ {name} }" && apiKey != null && requirement.ApiKeys.Any(requiredApiKey => apiKey == requiredApiKey))
64- {
65- context.Succeed(requirement);
66- }
69+ if (requirement.PolicyName == "{ {name} }" && apiKey != null && requirement.ApiKeys.Any(requiredApiKey => apiKey == requiredApiKey))
70+ {
71+ context.Succeed(requirement);
6772 }
68- { {/isApiKey} }{ {/authMethods} }
73+ { {/isApiKey} }
74+ { {/authMethods} }
6975 }
7076 }
7177}
0 commit comments