56 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|