Abrufen der Spring Security-Authentifizierung, auch auf öffentlichen Seiten mit filter="none"

8

Nehmen wir an, ich habe eine einfache Seite namens faq.html. Ich möchte, dass diese Seite öffentlich zugänglich ist, daher wende ich die übliche Spring Security-Konfiguration an:

%Vor%

Lassen Sie uns auch sagen, dass, wenn der Benutzer diese Seite nach der Authentifizierung erreicht, ich "Hallo Vorname Nachname" auf der Seite drucken möchte. Für Seiten, die eine Authentifizierung erfordern, lege ich einfach das Ergebnis von die folgenden in meine ModelMap , und dann sind die Namen in meiner Ansicht später zugänglich:

%Vor%

Dies funktioniert nicht für faq.html , vermutlich, weil, wenn Sie filters="none" angeben, der Aufruf von getPrincipal() null zurückgibt. (Dieses Verhalten ist sinnvoll, da durch die Konfiguration keine Filter angewendet werden.) Stattdessen scheint es, dass ich eine Menge Spring Spring-Sachen manuell machen muss:

%Vor%

Gibt es einen besseren Weg, dies zu tun? Beispielsweise scheint es so zu sein, dass Spring eine Möglichkeit bieten sollte, ihre API-Aufrufe über die ursprüngliche <sec:intercept-url /> config einzubinden.

    
jtoberon 27.09.2011, 18:23
quelle

1 Antwort

11

Das ist der Grund, nicht filters = "none" für öffentliche Seiten zu verwenden.

Verwenden Sie stattdessen access = "permitAll" (oder access = "IS_AUTHENTICATED_ANONYMOUSLY, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED" , wenn Sie use-expressions = "true" nicht haben).

    
axtavt 27.09.2011, 18:53
quelle

Tags und Links