public class EAuthorizationService :DefaultAuthorizationService, IAuthorizationService
{
private readonly IHttpContextAccessor _httpContextAccessor;
public EbkAuthorizationService(IAuthorizationPolicyProvider policyProvider, IAuthorizationHandlerProvider handlers, ILogger logger, IAuthorizationHandlerContextFactory contextFactory, IAuthorizationEvaluator evaluator, IOptions options, IHttpContextAccessor httpContextAccessor) : base(policyProvider, handlers, logger, contextFactory, evaluator, options)
{
_httpContextAccessor = httpContextAccessor;
}
public async new Task AuthorizeAsync(ClaimsPrincipal user, object resource, IEnumerable requirements)
{
Console.WriteLine("EAuthorizationService -- requirements");
var header = _httpContextAccessor.HttpContext.Request.Headers;
const string OpenId = "OpenId";
if (header.ContainsKey(OpenId))
{
Console.WriteLine("OpenId = " + header[OpenId]);
var isExist = await RedisHelper.ExistsAsync($"{OpenId}:{header[OpenId]}");
if (isExist)
{
return AuthorizationResult.Success();
}
return AuthorizationResult.Failed();
}
else
{
var res = await base.AuthorizeAsync(user, resource, requirements);
return res;
}
}
public new Task AuthorizeAsync(ClaimsPrincipal user, object resource, string policyName)
{
Console.WriteLine("EAuthorizationService -- policyName");
var res = base.AuthorizeAsync(user, resource, policyName);
return res;
}
}