Spring und Acegi Security - Berechtigung zur Laufzeit ändern?

Crod

Mitglied
Moin Moin.

Meine Frage steht eigentlich schon fast im Titel.
Ich benutzer bei einer Werbanwendung Spring und Acegi Security. Beim Einloggen wird dann die Berechtigung des Users gesetzt. Ist es möglich diese während der Laufzeit noch zu ändern? Habe leider noch keinen Weg gefunden.

Gruß und Dank
Torben
 
Was meinst du genau? Die Berechtigungen, wie du sie an den Services deklariert hast oder die Berechtigung des eingeloggten Users?

Wenn letzteres der Fall ist brauchst du ja nur die GrantedAuthorities des Users updaten. Danach wirst du vermutlich programmatisch eine Reauthentifikation auslösen müssen, bzw. halt irgendwie das Authorization Objekt mit den neuen Authorities versehen.

Ansonsten bleibt nur der Hinweis auf die umfangreiche Referenzdoku:

http://static.springframework.org/spring-security/site/reference.html

REINHAUN!
 
Hallo Oliver,

das war ein wenig schlecht ausgedrückt.
Ja ich meinte den zweiten Fall. So wie du es sagst, hatte ich es mir auch gedacht. Habe aber leider keinen Weg gefunden die GrantedAuthorities zu updaten. Naja ich schaue und wenn ich was habe, meld ich mich :)

Gruß
Torben
 
Ich vermute der einfachste Weg ist da dein User Objekt. Ich vermute du benutzt die Standardimplementierung aus Acegi? Der ist halt als ValueObject designt. Dann bliebe nichts anderes übrig, als einen neuen User zu instantiieren, die veränderten Authorities mitzugeben und dann über die üblichen Mechanismen Authentication im SecurityContextHolder zu aktualisieren.

Gruß
Ollie
 
Also mein Problem habe ich gelöst, wollte hier nochmal posten, wie ich es denn nun geschafft habe.

War wirklich simpel, ich habe zuerst über
Code:
User newUser = new User (...);
GrantedAuthorityImpl[] authority = { new GrantedAuthorityImpl(...) };
einen neuen User und die gewünschten Authorities angelegt und diesen dann über
Code:
SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(newUser, null, authority));
zum SecurityContext hinzugefügt.
 

Neue Beiträge

Zurück