簡體   English   中英

如何在 ASP.NET Core Identity 中注銷其他用戶

[英]How to sign out other user in ASP.NET Core Identity

如何在 ASP.NET Core Identity 中注銷另一個用戶(不是當前登錄的用戶)。

我知道有一個SignOutAsync()的方法SignInManager ,但似乎沒有越權接受用戶作為參數。 我正在尋找類似的東西:

signInManager.SignOutAsync(user);

首先更新該用戶的安全戳:

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 Core Identity 2.x、3.x、5.x

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

我想你可能會發現一些撤銷功能,這會使用戶強行退出。 由於無狀態連接和基於令牌(或者我們可以說基於聲明)的身份驗證的性質,它目前並不容易實現。

應訪問已撤銷的用戶到令牌驗證端點,以檢查令牌是否有效。 在此之前,(1) 用戶可以顯示為已登錄,或 (2) 我們需要實現客戶端(應用程序或網絡)以非常頻繁地訪問令牌端點,直到令牌過期或撤銷。

登錄/退出僅限於令牌授權的用戶身份范圍,因此可行的解決方案是使令牌無效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM