Я использую ядро сигнализатора и работаю с авторизацией на основе ролей.
С другой стороны, мой ClientIdHandler
работает нормально в тестовом контроллере MVC с [Authorize(Policy = "ClientIdPolicy")]
, вот код требования:
public class ClientIdHandler : AuthorizationHandler<ClientIdRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
ClientIdRequirement requirement)
{
if (!(context.Resource is AuthorizationFilterContext resource) || resource.HttpContext == null
|| resource.HttpContext.Request == null || resource.HttpContext.Request.Headers == null) return Task.CompletedTask;
bool success = resource.HttpContext.Request.Headers.TryGetValue("ClientId", out var clientIdValue);
if (!success) return Task.CompletedTask;
if (!requirement.ClientIds.Contains(clientIdValue.ToString())) return Task.CompletedTask;
context.Succeed(requirement);
return Task.CompletedTask;
}
}
В контроллере mvc работает авторизация на основе политик, но НЕ в хабе signalr, поскольку context.Resource
всегда null
.
Это проблема с сигнализатором илия делаю что-то не так?