ASP.NET Core Identityで別のユーザー(現在ログインしていないユーザー)をサインアウトするにはどうすればよいですか?.
SignInManager
に SignOutAsync()
メソッドがあることは知っていますが、ユーザーを引数として受け入れるオーバーライドはないようです。私は次のようなものを探しています:
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の場合
services.Configure<SecurityStampValidatorOptions>(options =>
{
// enables immediate logout, after updating the user's stat.
options.ValidationInterval = TimeSpan.Zero;
});
私はあなたがいくつかのrevoke機能を見つけ、ユーザーを強制的にサインアウトさせると思います。現在、ステートレス接続とトークンベース(またはクレームベース)の認証の性質として、簡単に実装することはできません。
取り消されたユーザーは、トークンが有効かどうかを確認するために、トークン検証エンドポイントにアクセスする必要があります。それまでは、(1)ユーザーがサインインしていると表示されるか、(2)トークンエンドポイントにアクセスするためにクライアント(アプリまたはWeb)を実装する必要がありますveryトークンの有効期限まで頻繁に、または取り消し。
SignIn/Outは、トークンが承認されたユーザーIDスコープに固定されているため、実行可能なソリューションはトークンを無効にすることです。