Ich habe auch schon früher damit gekämpft.
Hier ist eine Analogie zu dem, was anscheinend vor sich geht ... Ein neuer Besucher, Joe, kommt auf die Website und meldet sich über die Anmeldeseite mit FormsAuthentication an. ASP.NET generiert eine neue Identität für Joe und gibt ihm ein Cookie. Dieser Keks ist wie der Schlüssel zum Haus, und solange Joe mit diesem Schlüssel zurückkommt, kann er das Schloss öffnen. Jeder Besucher erhält einen neuen Schlüssel und ein neues Schloss.
Wenn FormsAuthentication.SignOut()
es aufgerufen wird, weist das System Joe an, den Schlüssel zu verlieren. Normalerweise funktioniert dies, da Joe den Schlüssel nicht mehr hat und nicht mehr hineinkommen kann.
Wenn Joe jemals Allerdings kommt zurück und macht diese verlorenen Schlüssel haben, ist er ließ wieder in!
Nach allem, was ich sagen kann, gibt es keine Möglichkeit, ASP.NET anzuweisen, das Schloss an der Tür zu ändern!
Ich kann damit leben, indem ich mich an Joes Namen in einer Sitzungsvariablen erinnere. Wenn er sich abmeldet, verlasse ich die Sitzung, damit ich seinen Namen nicht mehr habe. Um später zu überprüfen, ob er zugelassen ist, vergleiche ich einfach seinen Identity.Name mit dem der aktuellen Sitzung. Wenn diese nicht übereinstimmen, ist er kein gültiger Besucher.
Kurz gesagt, verlassen Sie sich für eine Website NICHT darauf, User.Identity.IsAuthenticated
ohne auch Ihre Sitzungsvariablen zu überprüfen!