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-mvc-4 – 什么是antlr3,为什么默认情况下在VS2012
- asp.net-mvc – ASP.NET MVC框架中的MVVM和ModelBinders
- asp.net – App_Code中的类无法通过Global.asax.cs访问
- asp.net – ADO.NET在.NET内核可能吗?
- 如何配置asp.net与.net 4.5
- asp.net-mvc-2 – 如何在ASP.NET MVC2中为Html.LabelFor()添
- asp.net – 如何绑定gridview中的下拉列表?
- asp.net-mvc – MVC ASP.NET或Razor
- 程序集崩溃我的asp.net 4.0
- 实时监控ASP.NET Web应用程序的工具和方法?
- asp.net – HTTP错误404.4 – 未找到您要查找的资
- asp.net – Web发布的密码不同于我的Azure管理员
- asp.net – 如何使用转换语法更改web.config设置
- ASP.NET:存储应用程序设置的位置?
- asp.net-mvc-2 – 未针对请求的URL配置默认文档,
- asp.net-mvc – 使用mvc的主要目的
- asp.net-mvc – 使用其他bool字段进行MVC远程验证
- asp.net – NuGet:’X’已经有一个依赖定义为’
- asp.net – 什么时候应该在服务器控件上启用Enab
- asp.net-mvc-4 – .NET MVC4 ActionNameSelector
