2

私はユーザーを認証するためにAsp.net Identityを使用しています。私は管理者側から任意のユーザーをロックアウトしようとしています。しかし、私がオンラインのユーザーをロックアウトすると、ログアウトしませんでした。私は自分の問題について多くのコメントを読んだが、すべてがうまくいかなかった。私はUserManager.UpdateSecurityStampを試してユーザーをログアウトさせましたが、うまくいきませんでした。 ロックアウトするとすぐにユーザーをログアウトできますか?Asp.net Identity logout他のユーザー

public ActionResult LockUser(string userId) 
     { 
      _userManager.SetLockoutEnabled(userId, true); 
      _userManager.SetLockoutEndDate(userId,DateTime.Today.AddYears(999)); 

      var user = _userManager.FindById(userId); 
      _userManager.UpdateSecurityStamp(userId); 

      return RedirectToAction("UserDetail",new { userId }); 
     } 


app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       LoginPath = new PathString("/UnAuthorize/Index"), 
       Provider = new CookieAuthenticationProvider 
       { 

        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<AppUserManager, User>(
         validateInterval: TimeSpan.FromMinutes(1), 
         regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
       } 
      }); 
+0

:あなたは

は、この登録を持っていることを確認しStartup.Auth.cs。しかしこれは、更新セキュリティースタンプを呼び出した後、ユーザーがシステムを使用するための分窓を提供します。 'SecurityStampValidator'で' validateInterval'を0に変更してみてください。 – trailmax

+0

validateInterval = 0を試しましたが、もう一度動作しませんでした。私はオートファックを使用していますが、この問題が起きているかどうかは疑問です。 –

答えて

1

ほとんどの場合、OWINにApplicationUserManagerの登録がありません。 OWINには、ユーザーの新しいセキュリティスタンプを取得するためにユーザーマネージャーを取得する方法を知っておく必要があります。それを実際に行う必要があります

app.CreatePerOwinContext(() => DependencyResolver.Current.GetService<ApplicationUserManager>()); 
+0

それはうまくいきました、ありがとう@trailmax –

関連する問題