Cookie清理后,SignalR授权成功

时间:2014-05-14 15:11:43

标签: asp.net cookies websocket signalr

我使用auth cookie开发ASP.NET应用程序,并默认使用SignalR 2.0.3与Websocket传输进行聊天。我使用"授权"授权到集线器的属性。

[Authorize]
[HubName("c")]
public class Chat : Hub
{
...

我遇到了下一个问题。在浏览器(Chrome或Firefox)中清除所有cookie后,授权stil是成功的。它仅为WebSockets传输重现。 我尝试使用HubPipelineModule来解决这个问题:

public class CheckingCookiesPipelineModule : HubPipelineModule
{
    protected override bool OnBeforeIncoming(IHubIncomingInvokerContext context)
    {
        if (context.Hub.Context.Request.Cookies["auth_key"].Value == string.Empty)
        {
            return false;
        }
        return base.OnBeforeIncoming(context);
    }
}

它没有用,因为Cookie在Websocket请求中不是空的。 任何人都能解释一下SignalR Websocket的奇怪行为吗?是bug还是功能?可能有解决方法吗?

1 个答案:

答案 0 :(得分:1)

WebSocket是持久连接,它们始终是连接的。 Cookie在连接握手期间发送,而不是每条消息都发送。

如果您关闭连接,再次连接时cookie应为空。