【发布时间】:2018-06-08 03:02:09
【问题描述】:
使用 .NET Core 2.1 和 VS2017 预览版 2,我创建了一个简单的 Web 服务器,具有“作为 UI 的身份”,如 here 所述,然后在 this 之后添加了一个 SignalR 聊天。
特别是我有:
app.UseAuthentication();
app.UseSignalR((options) => {
options.MapHub<MyHub>("/hubs/myhub");
});
..
[Authorize]
public class MyHub : Hub
..
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:5000",
"sslPort": 0
我启动带浏览器的调试器,注册用户并登录,然后转到http://localhost:5000/SignalRtest(我的剃须刀页面使用signalr.js)并验证聊天是否正常。
我现在尝试创建一个 .NET Core 控制台应用聊天客户端:
class Program
{
public static async Task SetupSignalRHubAsync()
{
var hubConnection = new HubConnectionBuilder()
.WithUrl("http://localhost:5000/hubs/myhub")
.Build();
await hubConnection.StartAsync();
await hubConnection.SendAsync("Send", "consoleapp");
}
public static void Main(string[] args)
{
SetupSignalRHubAsync().Wait();
}
}
我的问题是我不知道如何验证这个客户端?
编辑:
(来自https://github.com/aspnet/SignalR/issues/2455)
"之所以能在浏览器中工作,是因为浏览器有一个 Cookie 从您登录时开始,因此它会在您登录时自动发送 SignalR 发出它的请求。在 .NET 中做类似的事情 客户端,您必须在服务器上调用可以设置 cookie,从 HttpClient 中舀出 cookie,然后在 调用 .WithUrl,如下所示:
var loginCookie = /* get the cookie */ var hubConnection = new HubConnectionBuilder() .WithUrl("http://localhost:5000/hubs/myhub", options => { options.Cookies.Add(loginCookie); }) .Build();
我现在悬赏这个问题,希望得到一个解决方案,展示如何使用“身份作为 UI”的 .NET Core 2.1 Web 应用 SignalR 服务器对 .NET Core 2.1 SignalR 控制台客户端进行身份验证。我需要从服务器获取 cookie,然后将其添加到 SignalR HubConnectionBuilder(现在有一个 WithCookie 方法)。
请注意,我不是在寻找像 IdentityServer 这样的第三方解决方案 谢谢!
【问题讨论】:
标签: asp.net-core signalr signalr-hub signalr.client asp.net-core-2.1