2

나는 Asig.net 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 시도했지만 다시 작동하지 않았습니다. 나는 autofac을 사용하고 있는데,이 문제가 발생했는지 궁금합니다. –

답변

1

대부분의 경우 당신은 OWIN와 ApplicationUserManager의 등록을 누락되었습니다. OWIN이 사용자 관리자에게 새로운 보안 스탬프를 받기 위해 사용자 관리자를 얻는 방법을 알게해야합니다. 그것을 실제로 어떻게해야

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

작동 했으므로, @trailmax에 감사드립니다. –