So integrieren Sie Spring Security und Struts2

8

Ich habe viel über dieses Thema gegoogelt und bisher konnte ich kein Tutorial finden, das die Integration von Struts2 und Spring Security betrifft.

Meine Frage ist, wie würde ich Spring Security und Struts2 integrieren?

Wo bestimmte Aktionen oder Seiten eingeschränkt werden sollen, wie die Adminseite / URL sollte nur von einem Administrator und anderen Dingen wie dem zugegriffen werden, wenn ein Benutzer versuchte, auf diese Seite zuzugreifen, würde er oder sie auf eine andere Seite umgeleitet werden.

    
user962206 15.01.2013, 08:47
quelle

2 Antworten

7

Angenommen, Sie müssen sicherstellen, was auf dem Pfad /admin/* zugänglich ist. Sie müssen den Spring-Sicherheitsfilter in Ihrem web.xml deklarieren, der Struts-Filter sollte danach kommen, so dass Spring Security, wenn Sie auf /admin zugreifen, die Anfrage zuerst bearbeitet und sie passieren oder blockieren kann abhängig von der Rolle des Benutzers:

%Vor%

Dann deklarieren Sie Ihren Sicherheitskontext für den Frühling:

%Vor%

Ich schlage vor, dass Sie das struts2-convention Plugin verwenden, so dass URLs wie /login automatisch an eine Klasse namens " com.foo.bar.actions.LoginAction " gebunden werden. Gleiches für LogoutAction

Nun, was unter /admin/* ist, sollte von Spring Security gesichert werden, und der Rest sollte direkt an den Struts2-Filter weitergeleitet werden.

Schließlich können Sie in Ihrer JSP überprüfen, ob jemand Admin ist mit:

%Vor%

Der Rest kann in jedem Spring Security Tutorial gefunden werden. Was wirklich wichtig ist, ist die Reihenfolge der Filtererklärung, die Federsicherheit muss zuerst sein.

Bearbeiten: Suche auf Google, es gibt auch dies Link , der für Sie hilfreich sein kann.

    
Alex 15.01.2013 09:02
quelle
5

Das ist eigentlich sehr einfach - Spring Security ist Web-Framework Agnostiker:)

Sie müssen die Spring Security-Filterkette definieren - dies ist ein Java-Filter, der allen Anforderungen zugeordnet werden sollte. Der Filter prüft, ob der Pfad irgendwelche Privilegien erfordert, und prüft in diesem Fall, ob der Benutzer angemeldet ist und diese Privilegien hat.

Einfaches Setup-Beispiel.

web.xml (Einfügen in die vorhandene, neben der struts-Konfiguration):

%Vor%

Spring-Sicherheitskonfiguration (in der in web.xml im contextConfigLocation-Parameter erwähnten Datei):

%Vor%

Sie können dies beliebig erweitern - Die Dokumentation von Spring ist eher gut geschrieben

Sie können eine noch einfachere automatische Konfiguration wählen:

%Vor%

Die obigen Optionen sichern Ihre Web-App pro Anfragepfad. Möglicherweise möchten Sie auch die Aktionen sichern. Hinzufügen der folgenden würde Sie in Gang bringen:

%Vor%

Lassen Sie mich wissen, welche Funktionen Sie benötigen, und ich kann Sie in eine Richtung weisen. Beachten Sie, dass die Namespacekonfiguration kein Wundermittel ist. Wenn Sie eine sehr individuelle Lösung benötigen, müssen Sie möglicherweise alle Quellbohnen selbst konfigurieren, aber die Dokumentation erklärt dies gut.

    
theadam 15.01.2013 09:10
quelle