35 lines
1.3 KiB
C#
35 lines
1.3 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
|
|
namespace CustomPolicyProvider
|
|
{
|
|
// This attribute derives from the [Authorize] attribute, adding
|
|
// the ability for a user to specify an 'age' paratmer. Since authorization
|
|
// policies are looked up from the policy provider only by string, this
|
|
// authorization attribute creates is policy name based on a constant prefix
|
|
// and the user-supplied age parameter. A custom authorization policy provider
|
|
// (`MinimumAgePolicyProvider`) can then produce an authorization policy with
|
|
// the necessary requirements based on this policy name.
|
|
internal class MinimumAgeAuthorizeAttribute : AuthorizeAttribute
|
|
{
|
|
const string POLICY_PREFIX = "MinimumAge";
|
|
|
|
public MinimumAgeAuthorizeAttribute(int age) => Age = age;
|
|
|
|
// Get or set the Age property by manipulating the underlying Policy property
|
|
public int Age
|
|
{
|
|
get
|
|
{
|
|
if (int.TryParse(Policy.Substring(POLICY_PREFIX.Length), out var age))
|
|
{
|
|
return age;
|
|
}
|
|
return default(int);
|
|
}
|
|
set
|
|
{
|
|
Policy = $"{POLICY_PREFIX}{value.ToString()}";
|
|
}
|
|
}
|
|
}
|
|
} |