小编Vic*_*ado的帖子

SignalR 授权被多次调用

我正在尝试跟踪连接到我的集线器的用户。我尝试这样做的方法是为我的集线器创建自定义授权属性,并检查尝试连接的用户。如果用户已经连接,则集线器不会授权连接

public class SingleHubConnectionPerUserAttribute : Microsoft.AspNet.SignalR.AuthorizeAttribute
    {
        private static readonly HashSet<UserKey> connections = new HashSet<UserKey>();

        public override bool AuthorizeHubConnection(HubDescriptor hubDescriptor, IRequest request)
        {
            Type hubType = hubDescriptor.HubType;
            string userId = request.User.Identity.GetUserId();
            UserKey userKey = new UserKey(hubType, userId);

            if (connections.Contains(userKey) || !base.AuthorizeHubConnection(hubDescriptor, request))
            {
                return false;
            }

            connections.Add(userKey);
            return true;
        }
}
Run Code Online (Sandbox Code Playgroud)

如果每个连接只调用一次 AuthorizeHubConnection 方法,这将工作正常,但事实并非如此。

当我加载尝试与集线器连接的页面时,AuthorizeHubConnection 奇怪地运行了多次,并且它运行的次数并不总是相同,有时是 5,有些是 3,我真的不知道可能是什么造成它。

您知道什么会导致 AuthorizeHubConnection 被多次调用吗?

c# asp.net authorize-attribute signalr

2
推荐指数
1
解决办法
850
查看次数

标签 统计

asp.net ×1

authorize-attribute ×1

c# ×1

signalr ×1