[de] Sitzungsverwaltung (solved)

Topics: Technical Support
Apr 30, 2011 at 8:59 AM

Hallo,

in der Doku steht: 

  • Bereitstellen der Benutzeridentität über die ganze Aufrufkette
  • Zwischenspeichern von Sitzungsvariablen

Habe mir die Beispiele angesehen aber irgendwie steig ich nicht ganz dahinter wie ich das realisieren kann.
Folgendes habe ich vor:

Enduser meldet sich am System mit seinem Username/Password an. Der Client baut eine verschlüsselte Verbindung auf
und hat dabei entweder Erfolg oder wird abgewiesen da Logindaten falsch. (Funktioniert auch bis hier)

Nun haben diese Nutzer aber unterschiedliche Berechtigungen am System, d.h. ich muss die Berechtigungsstufe sowie Name
irgendwie eindeutig dieser einen Verbindung zuweisen können, bei jedem Aufruf der vom Client kommt.

Es gibt ja den SessionManager unter ZyanComponentHost, allerdings will der für Get-/SetSessionVariable eine UID haben.
Wo bekomme ich die her? 

Oder bin ich völlig falsch und das geht so überhaupt nicht?

Coordinator
Apr 30, 2011 at 4:14 PM

Hallo Namikon,

das geht schon so, wie Du das vorhast. Allerdings nicht mit dem SessionManager. Der SessionManager kümmert sich um die Sitzungsverwaltung unter der Haube. Als Kosumenten der Sitzungverwaltung benötigten Deine Serverkomponenten nur die Klasse ServerSession. Über ServerSession.CurrentSession bekommst Du die Sitzung zurück, unter welcher der aktuelle Arbeitsthread läuft.

Hier ein Beispiel, wie Du den aufrufenden Client-Benutzer ermitteln kannst:

 // Identität des Aufrufers ermitteln
IIdentity callerIdentity = ServerSession.CurrentSession.Identity;

// Benutzernamen des Aufrufers ausgeben
Console.WriteLine(callerIdentity.Name);

Über ServerSession.CurrentSession.SessionVariables kannst Du Sitzungsvariablen für die Sitzungen lesen und schreiben.

Um die Authentifizierung (also die Identitätsprüfung) kümmert sich also Zyan. Die Authorisierung (Rechteprüfung) musst Du selber implementieren. Das ist aber auch stark Anwendungsabhängig. Du kannst einfach die Identity auswerten und z.B. in einer Datenbank hinterlegen, welche Nutzer welcher Rechte haben.

Hier findest Du ein Hello World-Beispiel, wie Du eine eigene Authorisierungsprüfung schreiben kannst: http://www.mycsharp.de/wbb2/thread.php?postid=3651434#post3651434

Gruß

Rainbird


Apr 30, 2011 at 6:40 PM

Wahnsinn, eine wahre Wonne mit Zyan zu arbeiten...

Funktioniert alles so wie ich mir das vorgestellt habe ;)
Und dank des kleinen HalloWelt Beispieles läuft auch die Berechtigungsverwaltung reibungslos.

Tausend Dank! 

Coordinator
May 1, 2011 at 10:00 AM

Danke fürs positive Feedback.