Ich war auf der Suche nach einem konkreten, ernsthaften und vollständigen Beispiel zur Verwendung der Spring-Sicherheit in einer Spring Boot-Anwendung, die Spring data repositories für den Zugriff auf die Datenbank verwendet Abfrage über registrierte Benutzer.Spring Security in Verbindung mit Spring Repositories zum Sichern und Authentifizieren verschiedener Teile einer Website
Ich habe gesehen, dass es leicht durch Überschreiben der configure
Methode eine Reihe von Web-Seiten mit Spring Security geschützt, zum Beispiel mit den folgenden Optionen:
http.authorizeRequests()
.antMatchers("/", "/css/**", "/js/**", "/vendor/**", "/templates/**")
.permitAll()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
Dieser Code schützt Anwender zum Beispiel von http://localhost:3000/home/users/
Zugriff, aber ermöglicht dann Zugriff auf http://localhost:3000/login
oder einfach http://localhost:3000
.
Ich habe gelesen über Frühjahr Sicherheit, aber ich kann nicht erhalten, wie kann ich die verschiedenen Teile einer Anwendung schützen, zum Beispiel, wenn ein Benutzer auf der Website angemeldet ist, und verbieten ihm den Zugriff von Beispiel http://localhost:3000/home/users/another_user
, und im Allgemeinen den Zugriff eines angemeldeten Benutzers auf alle Teile der Website zu steuern.
Ich verwende Spring data repositories, um Daten der Datenbank über die Entitäten zu manipulieren.
Kennen Sie ein Beispiel, das Spring-Sicherheit in Verbindung mit Spring-Repositories (und ggf. anderen Tools) verwendet, um verschiedene Teile einer Website zu schützen (und zu authentifizieren)? Ein (Video-) Tutorial kann ebenfalls nützlich sein.
Danke für jede Hilfe.
Hinweis: Ich habe auf der sagan Website Repository gesucht, aber es ist ziemlich komplex, zu verstehen, was los ist ...
Entschuldigung dafür, dass Sie lange keine Rückmeldung zu Ihrer Antwort gegeben haben, aber ich fand alle diese Konzepte nicht trivial und seltsam aus meiner Sicht, wahrscheinlich, weil ich mit diesen Dingen im Allgemeinen neu bin, obwohl ich 'pass.js' bereits einmal mit Node und Express benutzt habe. Ich hätte eine erste Frage oder Zweifel. Warum sollten wir diese 'PostAuthorize'-Sache auf eine Repository-Methode anwenden? Liegt das daran, dass wir in den Spring-Controllern diese spezifische Repository-Methode (die die Annotation enthält) verwenden können, die einige Prüfungen durchführt? – nbro
Es scheint, dass Spring Security alles nur für die einfachen Fälle sehr komplex macht ... Von dem, was ich mit pass.js erinnere, war es viel einfacher, die Sicherheit für die Anwendung einzurichten, aber ich kann mich auch irren oder, oder Zeit, ich hatte nicht die ganze Perspektive von dem, was ich tat ... – nbro
Ich habe es auf das Repository gelegt, weil das Repository eine Instanz des Domainobjekts zurückgibt, das im Evaluator benötigt wird. Ich kann die Bewertung nicht sehr gut auf den Controller anwenden, weil das etwas ganz anderes zurückgeben wird. Sie können Sicherheit überall anwenden, aber dieser spezielle Fall überprüft das Domänenobjekt, das von einer Methode zurückgegeben wird, so dass Repository oder Service-Layer geeignet sind. Der angemeldete Benutzer hat eine Entität angefordert. Erlaube den Zugriff, wenn der angemeldete Benutzer das angeforderte Objekt "besitzt" oder eine Admin-Rolle hat, andernfalls den Zugriff verweigern. –