reactredux/webapi/WeatherForecast/Policies/WhitelistToken.cs

56 lines
1.6 KiB
C#

using Extensions;
using Microsoft.AspNetCore.Authorization;
using WeatherForecast.Services;
namespace WeatherForecast.Policies {
/// <summary>
///
/// </summary>
public class WhitelistTokenRequirement : IAuthorizationRequirement {
// public string WhiteListToken { get; }
/// <summary>
///
/// </summary>
public WhitelistTokenRequirement() {
// WhiteListToken = whiteListToken;
}
}
/// <summary>
///
/// </summary>
public class WhitelistTokenHandler : AuthorizationHandler<WhitelistTokenRequirement> {
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IAuthenticationService _athenticationService;
/// <summary>
///
/// </summary>
/// <param name="httpContextAccessor"></param>
/// <param name="athenticationService"></param>
public WhitelistTokenHandler(
IHttpContextAccessor httpContextAccessor,
IAuthenticationService athenticationService
) {
_httpContextAccessor = httpContextAccessor;
_athenticationService = athenticationService;
}
/// <summary>
///
/// </summary>
/// <param name="context"></param>
/// <param name="requirement"></param>
/// <returns></returns>
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;
}
}
}