如何在ASP.NET Core Identity中注销其他用户

如何在ASP.NET Core Identity中注销另一个用户(不是当前记录的用户)。

我知道SignOutAsync()有一个SignOutAsync()方法,但似乎没有覆盖接受用户作为参数。 我正在寻找类似的东西:

 signInManager.SignOutAsync(user); 

首先更新该用户的安全标记:

 await userManager.UpdateSecurityStampAsync(user) 

然后,在SecurityStampValidationInterval到达之前,该用户将不会注意到这些更改。 因此,立即注销将其设置Zero

 services.AddIdentity(identityOptions => { // enables immediate logout, after updating the user's stat. identityOptions.SecurityStampValidationInterval = TimeSpan.Zero; } 

更新:对于ASP.NET Core Identity 2.x

 services.Configure(options => { // enables immediate logout, after updating the user's stat. options.ValidationInterval = TimeSpan.Zero; }); 

我想你可能会找到一些撤销function,这会强行注销用户。 目前,它不容易实现,因为无状态连接和基于令牌的(或者我们可以说基于声明的)身份validation的性质。

应该将已撤销的用户访问到令牌validation端点,以便检查令牌是否有效。 在此之前,(1)用户可以显示为已登录,或者(2)我们需要实施客户端(app或web)以非常频繁地访问令牌端点,直到令牌过期或撤销。

SignIn / Out被授予令牌授权的用户身份范围,因此可行的解决方案是使令牌无效。