2017-12-28 7 views
0

Ich habe ein Problem beim Abmeldeprozess als nach dem Abmelden user.identity.getuserid() gibt den Benutzer-ID-Wert zurück, ob es Null zurückgeben soll. Hier Screenshot here ist mein Code,Warum nach erfolgreicher Abmeldung user.identity.getuserid() gibt Benutzer-ID-Wert in Web-API zurück?

/// <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

Ich habe 'Direktfenster' eingecheckt, nach dem Abmelden zurückgegeben Benutzer ID-Wert. –

+0

Könnte es sich um ein Caching-Problem handeln, das sich auf die aktuelle Webanforderung bezieht? Wenn Sie 'Logout' ein zweites Mal (direkt danach) aufrufen, was ist der Wert von' userId' für diese zweite Anfrage? – mjwills

+0

Ich habe einen Screenshot beigefügt. Bitte klicken Sie hier auf Screenshot –

Antwort

1

Die Identität in einem Cookie gespeichert wird und auf den Server in der HTTP-Anforderung gesendet. Abmelden weist den Browser an, den Cookie ablaufen zu lassen/löschen. Sie haben jedoch den Haltepunkt festgelegt, bevor Sie die Antwort an den Browser senden. Nächste Anfrage sollte Benutzer als null haben

Verwandte Themen