Skip to content

Commit a38a54f

Browse files
committed
Fallback to regular HttpContext if context is not an AuthorizationFilterContext
1 parent 570915e commit a38a54f

1 file changed

Lines changed: 17 additions & 11 deletions

File tree

modules/openapi-generator/src/main/resources/aspnetcore/3.0/Authentication/ApiAuthentication.mustache

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ using System.Collections.Generic;
33
using System.Linq;
44
using System.Threading.Tasks;
55
using Microsoft.AspNetCore.Authorization;
6+
using Microsoft.AspNetCore.Http;
67
using Microsoft.AspNetCore.Mvc.Filters;
78

89
namespace {{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

Comments
 (0)