asp.net-mvc – 在活动的SignalR连接期间更改用户身份 – 如何重
我遇到了SignalR和用户在ASP.NET MVC 4应用程序中更改身份的问题.我正在使用Forms身份验证与自定义成员资格提供程序.
我有SignalR的视图也有一个登录(和注销)按钮,并且登录和注销的用户必须能够看到这个视图(并且都连接到与该关联的SignalR组相关联)视图).但是,当用户登录时,我会遇到麻烦.当用户身份发生变化时,建议的“重新连接”SignalR连接的做法是什么?该视图是由其他操作显示的其他几个视图之一.这是唯一一个包含SignalR的JavaScript. 事实上,我甚至对所有用户的身份感兴趣,所以把用户关注点转移到某种程度上就可以了(但是我找不到一个方法).用户更改可以触发页面重新加载,因为登录/注销发生在除了维护连接的窗口之外的窗口中,因此后者没有用户的焦点. 这个问题,换句话说:当用户身份从登录用户更改为已注销的用户时,如何保持基本的SignalR连接,反之亦然? 我试过的事情 >在页面上处理登录/注销事件,如下所示: 这有效,但这将需要SignalR在用户所在的每个页面上 有关我的设置的更多细节 对于这种特殊用例,用户会看到包含SignalR的页面.我按照惯例加入中心: var hub = $.connection.theNameOfTheHub; $.connection.hub.start().done(function () { hub.server.joinList(id); }); 为了这个例子的目的,我改了几个名字.基本上,我想监控页面上显示的项目列表中的更改.我使用列表的id作为标识符加入一个组. 异常消息是“System.InvalidOperationException:无法识别的用户身份”.在活动的SignalR连接期间,用户身份不能更改.它来自Microsoft.AspNet.SignalR.PersistentConnection.GetConnectionId.我查找了源代码,并将实际的context.Request.User.Identity.Name与存储在连接令牌中的context进行比较.这一切都是有道理的,但我正在寻找的是一种解决方法. 我正在使用Microsoft.AspNet.SignalR 1.1.2. 解决方法
这很简单,不要依赖用户识别,而是创建自己的cookie,您可以跟踪每个用户,无论该用户是否登录.就像许多广告商也有Cookie来跟踪用户,即使他们没有登录.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET表单中的Paypal表单
- asp.net-mvc – 控制器和操作方法之间丢失的会话变量
- asp.net-mvc – Facebook Real-time Updates不发布数据
- asp.net – 启用了slidingExpiration的FormsAuthentication
- asp.net-mvc – 如何在单个页面中使用两个AntiForgeryToken
- 取消ASP.NET中的默认提交按钮
- asp.net url分页类代码
- asp.net – 如何将所有httpErrors重定向到自定义URL?
- asp.net – 网站和虚拟目录之间有什么区别
- ActiveDirectory ASP.NET中的当前用户名
- asp.net-mvc – 如何测试ASP.NET MVC 3中的Rende
- asp.net – 使用“IN”SQL函数中的值将逗号分隔值
- asp.net-mvc – ASP.NET MVC身份默认实现
- asp.net – Web Api – 如何直接从OnActionExecu
- asp.net-core – 我为什么要选择带有.Net核心的A
- asp.net-mvc – 使用RedirectToAction单元测试AS
- asp.net-mvc – 在您的ViewModel中放置什么
- ASP.Net MVC:你可以在AJAX / jQuery调用中使用数
- asp.net 读取并修改config文件实现代码
- asp.net-mvc – ASP.Net MVC2自定义模板通过Ajax