2012-04-10 12 views
2

Kollegen, Im spring security documentation traf ich folgende Vorstellung:Verwendung statische Weben mit Feder Sicherheit

Wenn Sie Instanzen zu sichern, die von Spring nicht erstellt werden (mit den neuen Betreiber, zum Beispiel) dann Sie müssen AspectJ verwenden.

Könnte jemand mir bitte praktikable Beispiel für eine solche Verwendung zeigen. Der beste Fall, wenn dies mit Hilfe des statischen Webens gemacht wird.

Vielen Dank im Voraus!

+0

Spring Roo erledigt die Integration von AspectJ in ein Standard-Spring-Projektlayout sehr gut. Spring Security lässt sich leicht integrieren. Ich bin mir nicht sicher, ob mein Vorschlag Ihren Bedürfnissen entspricht, aber Sie könnten ein Roo-Beispielprojekt zusammenstellen, um zu sehen, wie sie alle zusammen spielen. – Marc

+0

@Marc nicht verstehen, was ist die Beziehung zwischen RAD-Konsole und rein technische Frage ** wie man etw ... ** – Dewfy

+0

Ich weiß nicht genau, wie dies zu tun, weshalb ich nicht ein Post tatsächliche "Antwort" Ich erzähle Ihnen, wie Sie ein gutes Beispiel bekommen könnten, und das wäre Roo zu verwenden, um schnell Ihr ganz eigenes funktionierendes AspectJ-konfiguriertes Beispiel zu erzeugen, das den von Spring empfohlenen Konventionen folgt. Und dann könnten Sie es in eine Richtung studieren. Wenn Sie diesen Vorschlag nicht mögen, können Sie gerne auf eine bessere Antwort warten. – Marc

Antwort

3

Es gibt eine Aspectj sample in der Spring Security Codebasis. Es kompiliert gegen die spring-security-aspects Modul und verwendet dann:

<global-method-security secured-annotations="enabled" mode="aspectj" /> 

zu gesicherten Anmerkungen zu ermöglichen. Der Code ist sehr einfach - es ist wirklich nur ein Satz von JUnit tests. Wenn Sie einen Blick darauf werfen, sehen Sie, dass diese Tests sowohl für Spring-Bean-Instanzen als auch für Instanzen enthalten sind, die mit dem Operator new erstellt wurden. Wenn Sie wissen möchten, wie spring-security-aspects funktioniert, sehen Sie sich die aspect source an.

+0

@Luke_Taylor es ist toll, dass Sie genau darauf reagieren. Gestern habe ich viel Zeit damit verbracht, dir im Frühjahr Code/Test zu zeigen. Lassen Sie mich die Frage klären: Wenn ich mit "ajc" durch Bean kompiliere und es zurückdepretiere, kann ich keine Änderungen sehen, die passen müssen: private pointcut executionOfPrePostAnnotatedMethod(): Ausführung (* * (..)) && (@annotation (PreAuthorize) '. Das Anwenden meines eigenen Aspekts funktioniert gut. – Dewfy

+0

auch meine Feder hindert mich daran,' mode = "aspectj" ' – Dewfy

+0

anzugeben Sie haben nicht gesagt, welche Version Sie verwenden.' Mode = "aspectj" 'ist im aktuellen verfügbar Minor-Versionen von 3.0 und 3.1 Ich kann nicht wirklich sagen, wie Sie 'ajc' und Ihre Beobachtungen damit verwenden - ich weiß nicht, was dort passiert Die Stichprobe, auf die ich Sie hingewiesen habe, sollte einen guten Ausgangspunkt bieten zum Erstellen von Arbeitscode, der gegen das aspects-Modul mit 'ajc' kompiliert wird. Ich würde versuchen, Ihre Klassen dazu hinzuzufügen und eine weitere JUnit-Testmethode mit Ihrem Code hinzuzufügen. –

Verwandte Themen