English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring Framework in Spring 3.1Hinzugefügt wurde Java-Konfigurationsunterstützung. In Spring Security wurde die Java-Konfiguration hinzugefügt 3.2In dem, in dem wir Spring Security konfigurieren können Ohne Zeile XML zu schreiben.
Hier erstellen wir ein Beispiel, das Spring implementiert. Sicherheit und ohne XML konfiguriert. Es umfasst die folgenden Schritte.
Der erste Schritt ist die Erstellung einer Spring Security Java-Konfiguration. Unten ist eine einfache grundlegende Java-Konfiguration gegeben.
WebSecurityConfig.java
package com.w3codebox; import org.springframework.context.annotation.*; //import org.springframework.security.config.annotation.authentication.builders.*; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.*; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @EnableWebSecurity @ComponentScan("com.w3codebox") public class WebSecurityConfig implements WebMvcConfigurer { @Bean public UserDetailsService userDetailsService() throws Exception { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser(User.withDefaultPasswordEncoder().username("w3codebox"). password("java123").roles("USER").build()); return manager; } protected void configure(HttpSecurity http) throws Exception { http .antMatcher("/") .authorizeRequests() .anyRequest().hasRole("ADMIN") .and() .httpBasic(); } }
Diese Konfiguration erstellt eine als springSecurityFilterChain für den Servlet-Filter. verantwortlichSchützen Sie die URL der Anwendung, überprüfen Sie die übermittelten Benutzernamen und Passwörter, leiten Sie weiter zur Loginmaske usw.
Die obige Java-Konfiguration führt für unsere Anwendung folgende Maßnahmen aus.
Authentifizierung für jeden URL verlangen Anmeldeformular erstellen Authentifizierung durch Formularauthentifizierung ermöglichen Abmeldung ermöglichen CSRF-Angriffe verhindern sichere Titelintegrationen usw.
Nun registrieren wir springSecurityFilterChain . Um sich zu registrieren, bietet Spring Security die Basisklasse AbstractSecurityWebApplicationInitializer an, die wir erweitern müssen.
Für Spring MVC-Anwendungen sieht SecurityWebApplicationInitializer wie folgt aus.
SecurityWebApplicationInitializer.java
package com.w3codebox; import org.springframework.security.web.context.*; public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { }
Dieser Code registriert für jeden URL unserer Anwendung die springSecurityFilterChain.
Nun laden wir WebSecurityConfig in unseren bestehenden ApplicationInitializer und fügen es der Methode getRootConfigClasses() hinzu.
MvcWebApplicationInitializer.java
package com.w3codebox; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public class MvcWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override geschützte Class<?[]> getRootConfigClasses() { return new Class[] { WebSecurityConfig.class }; } @Override geschützte Class<?[]> getServletConfigClasses() { // TOdo Auto-generierter Methodenstub return null; } @Override protected String[] getServletMappings() { return new String[] { "/"}; } }
WebSecurityConfigurerAdapter Die Klasse bietet eine Methode configure(HttpSecurity http), die folgende Standardkonfiguration enthält. Die Standarddefinition ist wie folgt.
protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .formLogin() .and() .httpBasic(); }
Es ähnelt dem angegebenen XML.
<http <intercept-url pattern="/**" access="authenticated"/> <form-login /> <http-basic /> </http>
Diese Methode führt folgende Aktionen aus.
Es stellt sicher, dass jede von den Benutzern vorgeschlagene Anfrage eine Authentifizierung erfordert Es ermöglicht den Benutzern, sich über Formular-Login zu authentifizieren Es ermöglicht den Benutzern, sich über HTTP Basic-Authentifizierung zu authentifizieren
Erstellen Sie einen Controller, um Benutzeranfragen zu verarbeiten.
HomeController.java
package com.w3codebox.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HomeController { @RequestMapping(value="/", method=RequestMethod.GET) public String index() { return "index"; } }
Wir haben eine View (.jsp) Seite index.jsp mit folgendem Quellcode.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Home Page</title> </head> <body> Willkommen auf der Startseite! </body> </html>
Unser vollständiges Projekt sieht wie folgt aus.
Ausgabe:
Wir haben im Controller nur eine Aktion und nur echter Benutzer kann darauf zugreifen. Daher wird der Anwendung beim Ausführen angezeigt, dass Sie Anmeldedaten eingeben müssen. Die Ausgabe ist unten gezeigt.
Dies ist Standardanmeldeseite, die von Spring Security bereitgestellt wirdSeite, die wir nicht erstellt haben. Obwohl wir unsere eigene Anmeldeseite erstellen und die Anwendung konfigurieren können. Dies werden wir im nächsten Thema tun.
Jetzt, geben Sie die Anmeldedaten ein, um auf die Anwendungsressourcen zuzugreifen. Spring Security überprüft die Benutzeranmeldedaten und stellt die Echtheit des Benutzers sicher.
Lassen Sie uns sehen, was passiert? Wenn wir falsche Anmeldedaten eingeben.
NachdemSie auf die Anmelde Taste geklickt haben, wird FalscheAnmeldedaten (FalscheAnmeldedaten)Fehler.
Jetzt,verwenden RichtigeAnmeldedatenangemeldet./strong>
DieseAnmeldungpasstundzeigenSiedieStartseite(index.jsp).