用户原则/标识被aspnet标识MVC5中的第二个浏览器实例覆盖

时间:2015-05-04 09:20:05

标签: c# asp.net-mvc-5 asp.net-identity owin

我在我的应用程序中使用aspnet identity / owin进行身份验证/授权。

当我使用第二个应用程序用户从新浏览器实例登录时遇到问题,而第一个用户已经登录,第二个浏览器可能会覆盖用户原则/标识对象。由于第一个浏览用户正在退出,因为第二个用户对第一个用户的影响较小。

我的问题是为什么不是每个浏览器实例都维护其用户原则/身份?我在代码中做错了吗?请帮忙。这个问题困扰了我很多天。

var identity = new ClaimsIdentity(
            new[] { new Claim(ClaimTypes.Name, model.UserName) }, 
            DefaultAuthenticationTypes.ApplicationCookie, 
            ClaimTypes.Name, 
            ClaimTypes.Role);

identity.AddClaim(new Claim(ClaimTypes.Role, roles));

var claimsPrincipal = new ClaimsPrincipal(identity);

// Set current principal
Thread.CurrentPrincipal = claimsPrincipal;

//User Added code 
await SignInAsync(user, model.RememberMe);

//set up cookie for using data across pages

1 个答案:

答案 0 :(得分:0)

Em ..你在哪里与Idnetity合作?这看起来很多层次。

首先,删除Thread.CurrentPrincipal = claimsPrincipal; - 这可能会造成很多麻烦。 Thread.CurrentPrincipal并不总是登录到MVC应用程序的用户。有时(例如在应用程序启动时),这可能是运行IIS的用户。

如果这是一个登录代码,请在VS 2013中使用个人帐户创建一个新的MVC项目,并查看处理登录的代码 - 只需遵循该模式。