Код: Выделить всё
public class TokenValidationAuthorizationHandler: AuthorizationHandler
{
private readonly IHttpContextAccessor _httpContextAccessor;
public TokenValidationAuthorizationHandler(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, TokenValidationCustomRequirement requirement)
{
var httpContext = context.Resource as DefaultHttpContext;
if (httpContext == null)
{
context.Fail();
}
var authHead = httpContext.Request.Headers.Authorization;
var bearerToken = TokenHelper.GetToken(authHead.ToString());
if (string.IsNullOrEmpty(bearerToken))
{
context.Fail();
}
else
{
context.Succeed(requirement);
}
return Task.CompletedTask;
}
}
Код: Выделить всё
public class TokenValidationAuthorizationMiddlewareResultHandler : IAuthorizationMiddlewareResultHandler
{
public Task HandleAsync(RequestDelegate next, HttpContext httpContext, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
{
if (authorizeResult.Challenged || authorizeResult.Forbidden)
{
var response = new BadRequestResponse("Forbidden");
httpContext.Response.StatusCode = 401;
httpContext.Response.ContentType = "application/json";
return httpContext.Response.WriteAsync(JsonConvert.SerializeObject(response));
}
return next(httpContext);
}
}
Подробнее здесь: https://stackoverflow.com/questions/783 ... horization
Мобильная версия