web-dev-qa-db-ja.com

ASP.NET Core Identityで他のユーザーをサインアウトする方法

ASP.NET Core Identityで別のユーザー(現在ログインしていないユーザー)をサインアウトするにはどうすればよいですか?.

SignInManagerSignOutAsync() メソッドがあることは知っていますが、ユーザーを引数として受け入れるオーバーライドはないようです。私は次のようなものを探しています:

signInManager.SignOutAsync(user);
12
Mariusz Jamro

まず、そのユーザーのセキュリティスタンプを更新します。

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の場合

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

私はあなたがいくつかのrevoke機能を見つけ、ユーザーを強制的にサインアウトさせると思います。現在、ステートレス接続とトークンベース(またはクレームベース)の認証の性質として、簡単に実装することはできません。

取り消されたユーザーは、トークンが有効かどうかを確認するために、トークン検証エンドポイントにアクセスする必要があります。それまでは、(1)ユーザーがサインインしていると表示されるか、(2)トークンエンドポイントにアクセスするためにクライアント(アプリまたはWeb)を実装する必要がありますveryトークンの有効期限まで頻繁に、または取り消し。

SignIn/Outは、トークンが承認されたユーザーIDスコープに固定されているため、実行可能なソリューションはトークンを無効にすることです。

0
Youngjae