Hallo!

Ich habe eine etwas komplexere Web-Anwendung, die eine eigene
Rechteverwaltung ben�tigt. Diese Rechteverwaltung soll als Schnittstelle an dem
User-Objekt, welches sich im HTTP-Kontext der angefragten Seite befindet, realisiert
werden. Es soll dann im Endeffekt so aussehen, dass ich mit zuerst das
User-Objekt hole und dann an dem User-Objekt eine Methode aufrufe wie: "Kann der
Benutzer auf Objekt X Aktion Y ausf�hren ?"
Die R�ckgabe w�re dann halt was boolsches.

Ich muss also daf�r sorgen, dass das Benutzerobjekt eine neue Methode
anbietet.

In meiner Anwendung wird die Forms-Authentication verwendet. Diese
Authentifizierungsmethode sorgt jedoch daf�r, dass das User-Objekt vom Typ
FormsPrincipal ist. Was ich jedoch gerne h�tte, ist ein eigenes Objekt an der Stelle
dieses FormsAuthentication-Objektes.

Damit ist das Problem eigentlich schon vollkommen beschrieben....

Nun m�chte ich euch die L�sung vorstellen, die ich dann implementiert habe.
Was ich gerne h�tte, w�re, wenn ihr mir eure Meinung dazu mitteilt und mir
sagt, was ihr davon haltet und was man besser oder vollkommen anderes machen
sollte.

Ok. Also das erste was ich gemacht habe, ist dass ich eine Klasse
(MeinPrincipal) geschrieben habe, die von GenericPrincipal abgeleitet ist. Diese Klasse
definiert die von mir gew�nschten Erweiterungen. Hier sind dann solche
Sachen wie eine Autorisierungsmethode zu finden, die den Zugriff auf Objekte
�berwacht. Au�erdem gibts da noch so Sachen wie die Information, wann der Benutzer
zuletzt eingeloggt war, wann er das n�chste Mal sein Passwort zu �ndern hat
und so weiter..

Dann habe ich in der Global.asax.cs die Ereignisbehandlung f�r das Ereignis
"Application_AuthenticateRequest" angepasst. Hier wird einfach das aktuelle
UserObjekt, welches bis dahin ein FormsPrincipal ist, durch mein
selbstgestricktes MeinPrincipal ersetzt. Daf�r muss dann allerdings eine Datenbank
konsultiert werden, die die ben�tigten Daten enth�lt, um das MeinPrincipal-Objekt
mit Informationen �ber den aktuellen Benutzer zu f�ttern.

In meiner ASP.Net-Anwendung kann ich dann solche Aufrufe wie folgende
machen:

if (HttpContext.Current.User.hasRight(hier kommt eine id einer Datei, hier
kommt ein Recht)) {
        .
        .
        .
}


Das ist eigentlich auch schon alles (wenn ich nichts vergessen habe).

Also, bitte sagt mir, was ihr davon haltet!

Viele Gr��e

Hendrik Bock

-- 
GMX - Die Kommunikationsplattform im Internet.
http://www.gmx.net


| [aspdedotnet] als [email protected] subscribed
| http://www.dotnetgerman.com/archiv/aspdedotnet/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.dotnetgerman.com/listen/aspDEdotnet.asp

Antwort per Email an