如何从[Authorize()]访问SignalR Hub参数?

时间:2016-12-01 04:43:50

标签: asp.net-core authorization claims-based-identity signalr-hub

我正在建立一个聊天应用程序的信号器中心(它不是真的,但让我们假装它)。 我已经设置了我的授权,以便房间的创建者可以邀请用户进入房间。因此,有一个表存储谁拥有什么,谁被授予访问权限。

这很好。接下来的步骤是添加声明,这样我就不必检查谁可以访问每个请求的内容。当用户尝试加入聊天室,添加他们的声明并将其发送到启动信号器连接的页面时,我会检查一次。

现在我想在我的集线器上使用[authorize]装饰器,而不是抛出样板

user.Claims.Any(x=> x.ClaimType == $"CanJoinRoom_{RoomId}");

随处可见。

我已经了解了如何在此处进行基于自定义策略的授权: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies#security-authorization-policies-based

我有我需要的每件作品,除了一件:指定房间ID的实际参数。我已经能够破解

的东西了
[MyCustomAuthorizeMethod(this.Context.Request.Form["data"])]

但这看起来有点难看,为了使它工作,我必须序列化这个json

{"H":"myhubname","M":"Initialize","A":[39],"I":0}

这看起来真的很烂。我更喜欢将RoomId作为参数传递。 这只是一条线,但似乎是一个世界。是否有一种优雅的方式来做到这一点?

0 个答案:

没有答案