Format samples (#163)
parent
1fc341d4a6
commit
c4572009c9
|
@ -14,7 +14,7 @@ class MinimumAgeAuthorizationHandler : AuthorizationHandler<MinimumAgeAuthorizeA
|
|||
}
|
||||
|
||||
// Check whether a given MinimumAgeRequirement is satisfied or not for a particular
|
||||
// context
|
||||
// context.
|
||||
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
|
||||
MinimumAgeAuthorizeAttribute requirement)
|
||||
{
|
||||
|
|
|
@ -1,37 +1,26 @@
|
|||
// </snippet_all>
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace AuthRequirementsData.Authorization;
|
||||
|
||||
// <snippet_1>
|
||||
class MinimumAgePolicyProvider : IAuthorizationPolicyProvider
|
||||
{
|
||||
const string POLICY_PREFIX = "MinimumAge";
|
||||
public DefaultAuthorizationPolicyProvider FallbackPolicyProvider { get; }
|
||||
public MinimumAgePolicyProvider(IOptions<AuthorizationOptions> options)
|
||||
{
|
||||
// ASP.NET Core only uses one authorization policy provider, so if the custom implementation
|
||||
// doesn't handle all policies (including default policies, etc.) it should fall back to an
|
||||
// alternate provider.
|
||||
//
|
||||
// In this sample, a default authorization policy provider (constructed with options from the
|
||||
// dependency injection container) is used if this custom provider isn't able to handle a given
|
||||
// policy name.
|
||||
//
|
||||
// If a custom policy provider is able to handle all expected policy names then, of course, this
|
||||
// fallback pattern is unnecessary.
|
||||
FallbackPolicyProvider = new DefaultAuthorizationPolicyProvider(options);
|
||||
}
|
||||
public Task<AuthorizationPolicy> GetDefaultPolicyAsync() =>
|
||||
FallbackPolicyProvider.GetDefaultPolicyAsync();
|
||||
public Task<AuthorizationPolicy?> GetFallbackPolicyAsync() =>
|
||||
FallbackPolicyProvider.GetFallbackPolicyAsync();
|
||||
// </snippet_1>
|
||||
|
||||
|
||||
// Policies are looked up by string name, so expect 'parameters' (like age)
|
||||
// to be embedded in the policy names. This is abstracted away from developers
|
||||
// by the more strongly-typed attributes derived from AuthorizeAttribute
|
||||
// (like [MinimumAgeAuthorize()] in this sample)
|
||||
// <snippet_2>
|
||||
public Task<AuthorizationPolicy?> GetPolicyAsync(string policyName)
|
||||
{
|
||||
if (policyName.StartsWith(POLICY_PREFIX, StringComparison.OrdinalIgnoreCase) &&
|
||||
|
@ -44,6 +33,7 @@ class MinimumAgePolicyProvider : IAuthorizationPolicyProvider
|
|||
|
||||
return Task.FromResult<AuthorizationPolicy?>(null);
|
||||
}
|
||||
// </snippet_2>
|
||||
}
|
||||
|
||||
// </snippet_all>
|
||||
// dotnet user-jwts create --claim http://schemas.xmlsoap.org/ws/2005/05/identity/claims/dateofbirth=1989-01-01
|
||||
|
|
Loading…
Reference in New Issue