我有一个由ASP.NET MVC(或OWIN)托管的SignalR中心(聊天应用)。
我需要常见的Cookie身份验证。 (首先登录集线器本身,或者首先通过托管的MVC / OWIN应用程序)。
任务听起来很简单,但我无法管理。
网上有很多关于基于已登录用户实际授权访问的信息(包含在请求cookie中)。但实际上签署用户并将信息放入cookie中的信息很少(特别是在托管应用程序中签名,而不是在集线器本身中签名)。
此外,一些带有示例like this的文档已经无效(可能是由于SignalR的最新版本中的一些更改)。
例如,FormsAuthentication.SetAuthCookie
抛出异常,Response
中甚至没有任何HubCallerContext
属性可用于手动编写授权cookie。
我可以假设(甚至理解)通常,在Response中写入内容可能没有任何意义,因为SignalR连接不仅仅是一个常见的“回发逻辑”,但仍然无法找到身份验证的方式(登录)必须有效。
答案 0 :(得分:0)
SignalR
没有为您提供任何身份验证方法。相反,它使用Owin
中间件提供的身份验证。
如果您使用的是ASP.NET
,则应该使用SignInManager
以与使用普通ASP应用程序相同的方式登录您的用户。然后建立SignalR
连接。 SignalR
会尊重这一点,并且在您的集线器环境中,您将可以访问已登录的用户,并且您将能够使用授权过滤器。
请记住,在 SignalR
连接即将开始之前,登录必须。
您提供的链接非常精细,适用于SignalR
的v2。