私がしたいのは、一度に1つのデバイスにしかログインできないようにユーザーIDを制限することです。たとえば、ユーザーID「abc」は自分のコンピュータにログインします。ユーザID「abc」は現在、自分の電話機からログインしようとします。私がしたいのは、自分のコンピュータ上でセッションを終了させることです。Asp.net mvc identity SecurityStamp signout everywhere
私はAsp.net mvc identityのメンバーシップを使用しており、この目的でSecurityStampを使用しています。これは、アカウント/ログインアクションで私のコードです:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
var user = UserManager.FindByEmail(model.Email);
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
await UserManager.UpdateSecurityStampAsync(user.Id);
UpdateSecurityStampAsync
方法ドキュメントによると、言う:SignOutEverywhere機能のために使用するユーザーのための新しいセキュリティスタンプを生成します。しかし、それは動作しません。
はい。毎回のリクエストでデータベースが追加されます – tmg
PasswordSignInAsyncの前にUpdateSecurityStampAsyncを試してください – tmg
ログアウトできない、またはログアウトしていない他のデバイスにログアウトできますか? – tmg