2017-12-28 62 views
0

사인 아웃 후 로그 아웃 프로세스에 문제가 있습니다. user.identity.getuserid()가 null을 반환해야하는지 여부와 상관없이 userid 값을 반환합니다. Screenshot here 여기왜 성공적으로 로그 아웃 한 후 user.identity.getuserid()는 웹 API에서 사용자 ID 값을 반환합니까?

/// <summary> 
    /// Logout 
    /// </summary> 
    /// <returns>Http 200 Result</returns> 
    [Route("Logout")] 
    public async Task<IHttpActionResult> Logout() 
    { 
     //Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); 
     string userId = User.Identity.GetUserId(); 
     await UnitOfwork.ActiveUserRepository.DeleteOne(Builders<ActiveUser>.Filter.Where(o => o.UserId == userId)); 
     Authentication.SignOut(CookieAuthenticationDefaults.AuthenticationType, DefaultAuthenticationTypes.ExternalBearer); 
     Authentication.SignOut(CookieAuthenticationDefaults.AuthenticationType, DefaultAuthenticationTypes.ExternalCookie); 
     var autheticationManager = HttpContext.Current.GetOwinContext().Authentication; 
     autheticationManager.SignOut(CookieAuthenticationDefaults.AuthenticationType); 
     ManageLogOutHistory(); 
     return Ok(); 
    } 
+0

로그 아웃 한 후 '직접 실행 창'에서 사용자 ID 값을 반환했습니다. –

+0

현재 웹 요청과 관련하여 '캐싱'문제 일 수 있습니까? 'Logout'을 두 번째로 호출하면 (직선) 두 번째 요청에서'userId'의 값은 무엇입니까? – mjwills

+0

스크린 샷을 첨부했습니다. 스크린 샷을 클릭하십시오. –

답변

1

ID는 쿠키에 저장하고 HTTP 요청에서 서버로 전송, 내 코드입니다. 로그 아웃하면 쿠키를 만료/삭제하도록 브라우저에 지시합니다. 그러나 브라우저에 응답을 보내기 전에 중단 점을 설정했습니다. 다음 요청은 null로 사용자가 있어야합니다.