链接到令牌的ASP.NET API用户永远不会更改

问题描述:

api在本地主机上运行,​​请求来自基于Angular2的应用程序,并且使用OWIN和OAuth 2.0保护api。我不知道我应该在这里粘贴哪部分代码,因为我不知道问题出在哪里。链接到令牌的ASP.NET API用户永远不会更改

情景: 用户1个日志在客户端应用程序(从API请求令牌) 用户1获得令牌:XXXX ...... 用户1寻找他的数据和从服务器 用户得到他的数据传回1注销客户端应用程序和承载的令牌从localStorage的

删除

用户2个日志中(同一应用程序会话,同一服务器会话),并从API获取一个Takon 用户2得到令牌:YYYY ... 用户2查找他的数据,但从用户1获取数据。

服务器获取不同的令牌为用户2,但看着

User.Identity.GetUserId(); 

服务器仍然认为它是当用户1.

当登出我还调用API /帐号/注销,但这样做当我重新启动本地主机服务器,并与用户2登录比我得到正确的数据,但随后的情况是刚换不会改变任何东西

public IHttpActionResult Logout() 
    { 
     Authentication.SignOut(CookieAuthenticationDefaults.AuthenticationType); 
     return Ok(); 
    } 

(用户1从用户2得到的数据)。 如果您需要更多代码(但是我没有更改与AccountController相关的任何内容),请告诉我,我会查找它。

任何帮助表示赞赏。

谢谢

+0

API通常不具有注销功能。令牌服务器将通过令牌验证和识别客户端,该令牌通常在一段时间后过期。我想重新设计身份验证不是一种选择? – Crowcoder

+0

@Crowcoder如果使用令牌找到了正确的用户,并且我为这两个用户获得了两个不同的令牌,为什么服务器告诉它它们都是同一个用户?这是我不明白的。我知道注销并不是真的需要,不同的令牌应该足以将其视为不同的用户 – lordvlad30

+0

没有代码是不可能分辨的。我认为你可以通过它进行调试并找出结果。你不会得到任何(质量)答案,因为它是无法回答的。 – Crowcoder

从客户端传递一些参数来检查仍然是相同的用户还是已经改变。如果是这样,注销并再次连接。

+0

对于“注销并连接”又是什么意思? – lordvlad30

+0

var AutheticationManager = HttpContext.Current.GetOwinContext()。Authentication; AuthenticationManager.SignOut(); –

恕我直言,你还在使用无记名用户1令牌,这就是为什么服务器仍然认为谁是用户1访问。

要检查是否为真,您可以使用[Authorize(Users =“user1”)] //或者您可以更改为user2以检查用户1或2是否具有权限。