将用户订阅到ServiceStack中的SSE通道

问题描述 投票:2回答:1

我试图找出如何使用ServiceStack的OnAuthenticated函数将刚认证的用户订阅到SSE通道。这是我的实际代码:

public override void OnAuthenticated(IRequest httpReq, IAuthSession session, IServiceBase authService, IAuthTokens tokens, Dictionary<string, string> authInfo) {
    string subscriptionId = // ???;
    string[] channels = { "mychan1", "mychan2" };

    ServerEvents.SubscribeToChannels(subscriptionId, channels);
}

我的问题是:如何将subscriptionId绑定到刚刚认证的用户,以便给予他\她订阅频道?

非常感谢你!

c# servicestack server-sent-events
1个回答
0
投票

您无法代表Session中的用户进行订阅,客户端需要使用same Service Client they've authenticated with进行自己的经过身份验证的Server Events连接,例如:

初始化ServerEventsClient

var client = new ServerEventsClient(baseUri, channel=channelName) {
   // Register any handlers...
};

使用内置服务客户端进行身份验证:

client.ServiceClient.Post(new Authenticate {
    provider = "credentials",
    UserName = "user",
    Password = "pass",
    RememberMe = true,
});

启动ServerEventsClient以建立Authenticated Server Events连接:

client.Start();

或者qazxsw poi,用于与不同的Auth Provider(如JWT)建立经过身份验证的服务器事件连接的示例。

© www.soinside.com 2019 - 2024. All rights reserved.