【发布时间】:2019-02-01 06:17:08
【问题描述】:
我正在使用信号器核心及其基于角色的授权。
另一方面,我的 ClientIdHandler 在带有 [Authorize(Policy = "ClientIdPolicy")] 的测试 mvc 控制器中工作得很好,这里是要求的代码:
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 控制器中,基于策略的授权正在运行,但在信号器集线器中不起作用,因为 context.Resource 始终是 null。
这是信号器的问题还是我做错了什么?
【问题讨论】:
标签: asp.net-core signalr asp.net-core-signalr asp.net-authorization