asp.net-mvc – Context.User.Identity.Name为null与SignalR 2.X
发布时间:2020-12-15 18:45:22 所属栏目:asp.Net 来源:网络整理
导读:这让我疯狂。 我正在使用最新的signalR版本(2.0.2)。这是我的中心码(OnConnected) public override Task OnConnected() { //User is null then Identity and Name too. Connections.Add(Context.User.Identity.Name,Context.ConnectionId); return base.OnCo
这让我疯狂。
我正在使用最新的signalR版本(2.0.2)。这是我的中心码(OnConnected) public override Task OnConnected() { //User is null then Identity and Name too. Connections.Add(Context.User.Identity.Name,Context.ConnectionId); return base.OnConnected(); } 这是我的Controller的登录方式: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel model,string returnUrl) { if (ModelState.IsValid) { var user = await UnitOfWork.UserRepository.FindAsync(model.UserName,model.Password); if (user != null) { await SignInAsync(user,model.RememberMe); return RedirectToLocal(returnUrl); } } TempData["ErrorMessage"] = Resources.InvalidUserNameOrPassword; // If we got this far,something failed,redisplay form return RedirectToAction("Index","Home"); } 我发现有些人在OnDisconnected上遇到这个问题,我甚至没有在那里。 我正在使用MCV5模板。 你有什么想法有什么问题吗? 解决方法
我找到了最终的解决方案,这是我的OWIN启动类的代码:
public void Configuration(IAppBuilder app) { app.MapSignalR(); // Enable the application to use a cookie to store information for the signed i user app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,LoginPath = new PathString("/Home/Index") }); // Use a cookie to temporarily store information about a user logging in with a third party login provider app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); app.UseMicrosoftAccountAuthentication(new MicrosoftProvider().GetAuthenticationOptions()); app.UseTwitterAuthentication(new TwitterProvider().GetAuthenticationOptions()); app.UseFacebookAuthentication(new FacebookProvider().GetAuthenticationOptions()); app.UseGoogleAuthentication(new GoogleProvider().GetAuthenticationOptions()); } 让我自己喝咖啡,我以为“在验证后映射SignalR如何,瞧!现在它按照预期工作。 public void Configuration(IAppBuilder app) { // Enable the application to use a cookie to store information for the signed i user app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,LoginPath = new PathString("/Home/Index") }); // Use a cookie to temporarily store information about a user logging in with a third party login provider app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); app.UseMicrosoftAccountAuthentication(new MicrosoftProvider().GetAuthenticationOptions()); app.UseTwitterAuthentication(new TwitterProvider().GetAuthenticationOptions()); app.UseFacebookAuthentication(new FacebookProvider().GetAuthenticationOptions()); app.UseGoogleAuthentication(new GoogleProvider().GetAuthenticationOptions()); app.MapSignalR(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .net – Razor RTM中的声明性助手方法
- ASP.NET hostingEnvironment / shadowCopyBinAssemblies
- ASP.net服务器事件处理客户端
- msbuild – 如何为ASP.NET 5项目设置TeamCity构建
- asp.net-mvc – ASPNET MVC中的Modelbinding数据库实体
- entity-framework – 使用“迁移”实体框架6.0.2中的错误
- asp.net – 在web用户控件中传递int数组作为参数
- asp.net – 通用成员资格提供程序(System.Web.Providers)的
- .net – ASP MVC HTML Helpers – 好还是坏?
- asp.net-mvc – ASP.NET MVC(和MvcContrib)的隐藏功能