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

Mar*_*mro 11 c# asp.net-core-mvc asp.net-core asp.net-core-identity

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

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

signInManager.SignOutAsync(user);
Run Code Online (Sandbox Code Playgroud)

Vah*_*idN 18

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

await userManager.UpdateSecurityStampAsync(user)
Run Code Online (Sandbox Code Playgroud)

然后,该用户将不会被注意到更改,直到到达SecurityStampValidationInterval.因此,将其设置Zero为立即注销:

services.AddIdentity<User, Role>(identityOptions =>
{
   // enables immediate logout, after updating the user's stat.
   identityOptions.SecurityStampValidationInterval = TimeSpan.Zero;
}
Run Code Online (Sandbox Code Playgroud)

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

services.Configure<SecurityStampValidatorOptions>(options =>
{
    // enables immediate logout, after updating the user's stat.
    options.ValidationInterval = TimeSpan.Zero;   
});
Run Code Online (Sandbox Code Playgroud)

  • 使用零值将严重影响站点性能. (5认同)
  • 此处正确无误-它的查询不止一个-在ASP.NET Core 2.X(AspNetUser,AspNetUserClaims,AspNetUserRoles,AspNetRoles,AspNetRoleClaims)上计算了5个额外查询 (3认同)
  • AFAIK,这将导致针对每个用户的每个请求针对用户“变更”的数据库查询,并且这将影响对Webapp的所有请求。 (2认同)