using Extensions; using Microsoft.AspNetCore.Authorization; using WeatherForecast.Services; namespace WeatherForecast.Policies { /// /// /// public class WhitelistTokenRequirement : IAuthorizationRequirement { // public string WhiteListToken { get; } /// /// /// public WhitelistTokenRequirement() { // WhiteListToken = whiteListToken; } } /// /// /// public class WhitelistTokenHandler : AuthorizationHandler { private readonly IHttpContextAccessor _httpContextAccessor; private readonly IAuthenticationService _athenticationService; /// /// /// /// /// public WhitelistTokenHandler( IHttpContextAccessor httpContextAccessor, IAuthenticationService athenticationService ) { _httpContextAccessor = httpContextAccessor; _athenticationService = athenticationService; } /// /// /// /// /// /// protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, WhitelistTokenRequirement requirement) { var request = _httpContextAccessor?.HttpContext?.Request; if (request != null && _athenticationService.Get(request.GeBearerToken()).IsSuccess) context.Succeed(requirement); return Task.CompletedTask; } } }