如何注销 ASP.NET Core Identity 中的其他用户
How to sign out other user in ASP.NET Core Identity
如何在 ASP.NET Core Identity 中注销另一个用户(不是当前登录的用户)。
我知道 SignInManager
中有一个 SignOutAsync()
方法,但似乎没有覆盖接受用户作为参数。我正在寻找类似的东西:
signInManager.SignOutAsync(user);
我认为您可能会发现一些 撤销 功能,可以强制注销用户。由于无状态连接和token-based(或者我们可以说claim-based)身份验证的性质,目前不容易实现。
被吊销的用户应该访问令牌验证端点以检查令牌是否有效。在那之前,(1) 用户可以显示为 signed-in,或者 (2) 我们需要实现客户端(应用程序或网络)来访问令牌端点 very经常直到令牌过期或撤销。
SignIn/Out 被限制在 token-authorized 用户身份范围内,因此可行的解决方案是使令牌无效。
首先更新该用户的安全标记:
await userManager.UpdateSecurityStampAsync(user)
然后在 SecurityStampValidationInterval
到来之前,该用户不会注意到更改。所以将它设置为 Zero
以立即注销:
services.AddIdentity<User, Role>(identityOptions =>
{
// enables immediate logout, after updating the user's stat.
identityOptions.SecurityStampValidationInterval = TimeSpan.Zero;
}
更新:针对 ASP.NET 核心身份 2.x、3.x、5.x
services.Configure<SecurityStampValidatorOptions>(options =>
{
// enables immediate logout, after updating the user's stat.
options.ValidationInterval = TimeSpan.Zero;
});
如何在 ASP.NET Core Identity 中注销另一个用户(不是当前登录的用户)。
我知道 SignInManager
中有一个 SignOutAsync()
方法,但似乎没有覆盖接受用户作为参数。我正在寻找类似的东西:
signInManager.SignOutAsync(user);
我认为您可能会发现一些 撤销 功能,可以强制注销用户。由于无状态连接和token-based(或者我们可以说claim-based)身份验证的性质,目前不容易实现。
被吊销的用户应该访问令牌验证端点以检查令牌是否有效。在那之前,(1) 用户可以显示为 signed-in,或者 (2) 我们需要实现客户端(应用程序或网络)来访问令牌端点 very经常直到令牌过期或撤销。
SignIn/Out 被限制在 token-authorized 用户身份范围内,因此可行的解决方案是使令牌无效。
首先更新该用户的安全标记:
await userManager.UpdateSecurityStampAsync(user)
然后在 SecurityStampValidationInterval
到来之前,该用户不会注意到更改。所以将它设置为 Zero
以立即注销:
services.AddIdentity<User, Role>(identityOptions =>
{
// enables immediate logout, after updating the user's stat.
identityOptions.SecurityStampValidationInterval = TimeSpan.Zero;
}
更新:针对 ASP.NET 核心身份 2.x、3.x、5.x
services.Configure<SecurityStampValidatorOptions>(options =>
{
// enables immediate logout, after updating the user's stat.
options.ValidationInterval = TimeSpan.Zero;
});