C # löscht den Thread-Principal

8

Wie löschst du den Thread-Principal in c #.

Ich habe einen Hintergrund-Thread, der ein

tut %Vor%

kopiert dann den resultierenden Principal zurück in den Haupt-Thread

%Vor%

das funktioniert gut. Aber wenn ich mich auslogge, möchte ich den Principal löschen, wenn ich ihn auf null setze, tut er nichts. Thread.CurrentPrincipal = null; wenn ich es nochmal versuche über

%Vor%

Ich bekomme den Fehler

%Vor%

Irgendwelche Ideen?

    
gimpy 12.03.2009, 05:46
quelle

3 Antworten

3

Der Trick, dies zu lösen, bestand darin, ein Fassadenprinzip zu erstellen und es dem Thread zuzuweisen. Dann können Sie den aktuellen Benutzer für einen neuen Benutzer ausschalten.

    
gimpy 14.02.2011, 23:13
quelle
3

Ich glaube nicht, dass Sie den Prinzipal zurücksetzen können, ohne die AppDomain herunterzufahren und neu zu erstellen. Beim Aufruf von SetThreadPrincipal erhalten Sie nur eine Einstellung.

Angenommen, Sie verwenden Ihr eigenes benutzerdefiniertes Prinzipalobjekt, das Sie nach ValidateUser erstellt haben; Sie können wahrscheinlich eine "Abmelden" -Methode auf Ihren Principal setzen, die ihren internen Status auf einen nicht authentifizierten Benutzer zurücksetzt.

    
DancesWithBamboo 12.03.2009 07:05
quelle
3

Wenn Sie nur den Principal für den Hauptthread festlegen möchten, geben Sie einen Verweis an den Hintergrundthread weiter und legen Sie dann den Principal mit der CurrentPrincipal-Eigenschaft fest.

z.B. mainThead.CurrentPrincipal = Thread.CurrentPrincipal.

Wenn Sie fertig sind, setzen Sie es auf den ursprünglichen Prinzipal

    
laktak 12.03.2009 11:10
quelle

Tags und Links