Warum geht es nicht (Spring Security)?
Hallo,ich mache derzeit bei einem Kurs über Udemy mit und lerne dabei Spring Security. Leider ist der Kurs für Spring Security 6. Aber ich verwende die neuste Version, da dies ja irgendwie sinn macht damit anzufangen, anstatt die ältere Version zu lernen. Nun wollte ich wie im Kurs die SecurityConfig einstellen also mit SecurityFilterChain. Auch in den Docs für die neuste version sieht alles aus wie bei mir jetzt. Aber es möchte einfach nicht funktionieren. Ich werde bei allen Endpunkten nach einem Login gefragt, obwohl ich für 2 Endpunkte "permitAll()" verwende
So sieht meine Configuration aus:
In Postman kommt Unauthorized. Im Webbrowser wird nach Logindaten gefragt.
Warum geht es nur bei mir nicht... Hilfe bitte :(
2 Antworten
Dein Problem konnte ich bisher nicht reproduzieren, daher würde ich vorschlagen, dass du denselben Weg wie ich gehst.
- Lade dir dieses vorkonfigurierte Projekt (via Generate) herunter. Falls du nicht Maven sondern Gradle nutzt oder bereits mit JDK 21 arbeitest, musst du die Konfiguration vorher natürlich noch etwas abändern.
- Entpacke das ZIP-Archiv und öffne den Ordner in deiner IDE (Eclipse/IntelliJ/NetBeans/...).
- Pack deinen ContactController sowie die WebSecurityConfig in src/main/java/com/example/security und passe in beiden Dateien das Package an (com.example.security).
- Starte das Projekt via mvnw spring-boot:run (Maven) oder gradlew bootRun (Gradle).
Öffnet man nun http://localhost:8080/contact, wird Contact zurückgegeben. Andere URLs leiten auf eine Loginseite weiter. Das gilt für den Moment auch für /notices, da diese URL noch auf keine Seite / keinen Controller gemappt ist.
Ich bin kein Experte für Java und Spring Security, aber in den Route Mapping Beispielen, die ich gefunden habe, habe ich immer gesehen, dass nicht requestMatchers(), sondern antMatchers() verwendet wurde. Du könntest ja das mal versuchen.
Die antMatcher-Methode ist obsolet. Sie wurde bereits in Version 6 entfernt.