답변

9

신원 동시 로그인을 추적 할 수있는 기본 방법을 가지고 있지 않지만, 당신이 할 수있는 해결 방법 : 매번 사용자가 로그인, 인증-쿠키, 변경 사용자의 SecurityStamp로를 설정하기 전에 await userManager.UpdateSecurityStampAsync(user.Id);

그리고 당신이 당신의 Startup.Auth.cs에서이 부분이 있는지 확인하십시오 :

 app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      Provider = new CookieAuthenticationProvider 
      { 
       // Enables the application to validate the security stamp when the user logs in. 
       // This is a security feature which is used when you change a password or add an external login to your account. 
       OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
        validateInterval: TimeSpan.FromMinutes(5), 
        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
      } 
     });    

사용자에 SecurityStamp가 변경되기 때문에 때마다 사용자 로그 인이 다른 모든 세션은 무효화되며이 방법. 그리고 validateInterval 값이 충분히 낮으므로 다른 인증 쿠키를 곧 무효화 할 수 있습니다.

+0

해당 사용자의 활성 세션이있는 경우 로그인을 피할 수있는 방법을 찾고있었습니다. UserManager.GetSecurityStampAsync 트릭을 할 것인가? –

+1

@ThiagoCustodio'GetSecurityStampAsync'는 사용자 기록에 저장된 GUID 인 보안 스탬프 만 반환합니다. 그 자체로는별로 효과가 없습니다. 두 번째로 로그인하지 않으려면 훨씬 더 복잡합니다. 현재 세션을 추적하고, ID를 보존하고, ID를 auth-cookie에 넣고, 현재 세션이 이미 저장되어 있는지 확인합니다. . 그리고 나는이 접근법에 대한 많은 문제점들을 예견 할 수있다. 궁극적으로 사용자가 로그인 공유를 중단하기를 원한다면 제안 된 접근 방식으로 곧 비밀번호 공유가 나빠질 것입니다. – trailmax

+0

MVC 5의 파일에서 userManager.UpdateSecurityStampAsync (user.Id)를 기다리고 있습니까? – SAR