SignalR用户登录

时间:2014-10-30 11:19:53

标签: asp.net asp.net-mvc authentication signalr signalr-hub

我有一个由ASP.NET MVC(或OWIN)托管的SignalR中心(聊天应用)。

我需要常见的Cookie身份验证。 (首先登录集线器本身,或者首先通过托管的MVC / OWIN应用程序)。

任务听起来很简单,但我无法管理。

网上有很多关于基于已登录用户实际授权访问的信息(包含在请求cookie中)。但实际上签署用户并将信息放入cookie中的信息很少(特别是在托管应用程序中签名,而不是在集线器本身中签名)。

此外,一些带有示例like this的文档已经无效(可能是由于SignalR的最新版本中的一些更改)。

例如,FormsAuthentication.SetAuthCookie抛出异常,Response中甚至没有任何HubCallerContext属性可用于手动编写授权cookie。

我可以假设(甚至理解)通常,在Response中写入内容可能没有任何意义,因为SignalR连接不仅仅是一个常见的“回发逻辑”,但仍然无法找到身份验证的方式(登录)必须有效。

1 个答案:

答案 0 :(得分:0)

SignalR没有为您提供任何身份验证方法。相反,它使用Owin中间件提供的身份验证。

如果您使用的是ASP.NET,则应该使用SignInManager以与使用普通ASP应用程序相同的方式登录您的用户。然后建立SignalR连接。 SignalR会尊重这一点,并且在您的集线器环境中,您将可以访问已登录的用户,并且您将能够使用授权过滤器。

请记住,在 SignalR连接即将开始之前,登录必须

您提供的链接非常精细,适用于SignalR的v2。