Mat*_*and 3 javascript proxy signalr
我开始使用SignalR,我有一个情况,我将有一个SignalR站点,它将向客户端广播消息,但我还需要一个实际触发这些消息的管理界面.管理页面将调用服务器端方法,这些方法将为常规用户调用客户端Javascript方法.所以我想我可以设置两个独立的集线器(一个用于管理员,一个用于其他人)或者我可以在单个集线器中使用方法,只能由管理员调用以检查授权.
但除了授权之外,我还希望SignalR不包含管理方法或生成的Javascript代理类中的管理中心,这样我就不会宣传它们的存在(再次 - 这不是唯一的安全性,我将是检查授权).我是否可以在各个集线器或集线器中的方法上设置属性或属性,以阻止它们包含在代理中(但仍然可以从Javascript调用它们)?我知道你可以设置EnableJavaScriptProxies到false您的HubConfiguration,但似乎是全球性的,我想继续代理,因为我不想被人使用常规客户端的东西.
使用接口有一个技巧.由于代理只会在代理中生成公共方法,因此您可以使用以下界面创建集线器:
public class MyHub : Hub, IMyHub
{
void IMyHub.NotGeneratedOnClient()
{
}
public void GeneratedOnClient()
{
}
}
Run Code Online (Sandbox Code Playgroud)
如果使用MyHub类型的对象,则NotGeneratedOnClient方法将不可见,您只能使用interface访问它.由于方法不是公共代理生成器,因此不会将其添加到客户端代理