Frühlingssicherheit erinnern Sie sich an meine Grundprinzipien:
Bei der Anmeldung wird die Anfrage an den Filter usernamepasswordAuthenticationFilter gesendet. Wenn der Filter erfolgreich authentifiziert wird, wird sich daran erinnert, dass Meservice aufgerufen wird, was ein Token erzeugt. Schreiben Sie das Token an den Browser -Cookie. Gleichzeitig gibt es ein Tokenrepository in RememberMeService, der das Token und die Benutzerinformationen in die Datenbank schreibt. Wenn der Benutzer wieder auf das System zugreift und auf eine Schnittstelle zugreift, wird er einen RemalMeAuthenticationFilter -Filter durchlaufen. Es wird das Token im Keks lesen und es an Erinnerungspunkte übergeben. RemmberService verwendet das TokenRepository, um zu überprüfen, ob auf dem Token Datenbank Datenbank basiert. Wenn ein Datensatz vorliegt, wird der Benutzername herausgenommen, und rufen Sie UserDetailService an, um Benutzerinformationen basierend auf dem Benutzernamen zu erhalten, und setzen Sie sie dann in den SecurityContext ein.
RememberMeAuthenticationFilter authentifiziert die zweitletzte Filterposition der Filterkette in der Frühjahrssicherheit. Wenn kein anderer Authentifizierungsfilter erfolgreich authentifiziert werden kann, wird der AbgeordneteMeauthenticationFilter aufgerufen, um die Authentifizierung auszuprobieren.
erreichen:
1. add <input type="checkbox" name="remember-me" value="true"/> SpringSessionRememberMeServices
2. Nach dem obigen schematischen Diagramm müssen Sie das Tokenrepository konfigurieren und das generierte Token in der Datenbank speichern. Dies handelt
3. Konfigurieren Sie in Konfiguration
4. Fügen Sie den BrowserProperties automatische Anmeldezeit hinzu, um mich konfigurierbar zu machen
// Erinnere mich, dass ich private int remmMeseconds = 10; Qihuo -Paket com.imooc.s@configuration // Dies ist eine Konfiguration Public Class BrowsereSecurityConfig erweitert WebSecurityConFigurerAdapter {// Lesen Sie die Login -Seite -Konfiguration der Benutzerkonfiguration @autowired private Sicherheitproperties SecurityPropere. // Customized Processor nach erfolgreichem Login @Autowired Private AuthenticationsCessHandler ImoocAuthenticationsCessHandler; // Customized Processor nach fehlgeschlagener Authentifizierung @autowired Private AuthenticationFailureHandler ImoocAuthenticationFailureHandler; // Data Source @Autowired Private DataSource -DataSource; @Autowired Private UserDetailsService UserDetailsService; // Beachten Sie, dass es org.springFramework.security.crypto.Password.PasswordCoder @Bean public PassCoder PasswordDencoder () {// BcryptPasswordEnCoder implementiert PasswordEnCODER zurückgeben Neue BCryptPasswordCoder (); } / *** Denken Sie an meine TokenRepository -Konfiguration und führen Sie nach erfolgreichem Anmeldung das Token in der Datenbank auf. PersistentTokenRepository persistentTokenRepository () {jdbctokenRepositoryImpl jdbctokenRepository = new JdbctokenRepositoryImpl (); JDBCTOKERepository.setDataSource (DataSource); // Die entsprechende Tabelle wird beim Start automatisch generiert. Sie können das Skript für create_table_sql selbst in jdbctokenRepositoryImpl ausführen, um die Tabelle JDBCTOKERepository.SetCreateTableOnStartup (true) zu generieren. return JDBCTOKERepository; } // Version 2: Konfigurierbare Anmeldeseite @Override Protected void configure (httpecurity http) löst Ausnahme aus {// Verifizierungscode -Filter validateCodeFilter validateCodeFilter = new validateCodeFilter (); // Verwenden Sie Ihre eigene Fehlerbehandlung im Verifizierungscode -Filter validateCodeFilter.setAuthenticationFailureHandler (ImoocAuthenticationFailureHandler); // Konfigurierte Verifizierungscode -Filter -URL ValidateCodeFilter.SetSecurityProperties (SecurityProperties); validateCodeFilter.afterPropertieSt (); // Implementieren Sie das Schnittstellen-Sprungformularanmeldung, das Authentifizierung erfordert, Security = Authentifizierung + Autorisierung //http.httpbasic () // Dies ist die Standard-Popup-Box-Authentifizierung // http // Laden Sie den Verifizierungscode-Filter vor dem Login-Filter.AddFilterBeforBeforBeforeBefore (validateCodeFilter, usernamePasswords-filter). configuration.formlogin () .loginpage ("/authentication/fordering") // userernamepasswordAuthenticationFilter -filter -filter Die Standard -Login -URL ist "/login", was hier geändert werden kann. .SuccessHandler (ImoocAuthenticationsuccessHandler) // benutzerdefinierte Authentifizierung postprozessor.FailureHandler (ImoocAuthenticationFailEndler) // Verarbeitung nach dem Login fehlgeschlagen.and () // Erinnere dich an meine verwandte Konfiguration. TokenvaliditySeconds (SecurityProperties.getBrowser (). GetRememberMeseconds ()) // MEINE ME SECKENS.UserDetailsService (userdetailsService) // Denken Sie daran, dass nach dem Nachfolger die verwandte Konfiguration. SecurityProperties.getBrowser (). getLoginPage (): Benutzerkonfigurierte Anmeldung. //AnyRequest.authenticated () // Authentifizierung Authentifizierung ist erforderlich.and () .csrf (). Disable () // CSRF -Schutz schließen; }} curity.browser;Da Sie sich mit der Datenbank befassen möchten, müssen Sie eine Datenquelle injizieren: application.properties
Spring.DataSource.Driver-Class-name = com.mysql.jdbc.driverspring.datasource.url = jdbc: mysql: //127.0.0.1: 3306/imooc-Demospring.dataSource.username = Rootspring.Datasource.password = root
Starten Sie die Anwendung, Zugriff auf Localhost: 8080/Benutzer, und Anmeldung ist erforderlich
Erfolgreich anmelden:
Datenbank: Generieren Sie eine persistent_logins -Tabelle und speichern Sie ein Datenstück
Stoppen Sie den Dienst und starten Sie ihn erneut (kommentieren Sie den jdbcTokenRepository.setCreateTableOnStartup(true); .
Header anfordern:
Bisher wurde die grundlegende Erinnerung an erledigt
Der komplette Code ist in GitHub platziert: https://github.com/lhy1234/spring-security
Zusammenfassen
Das obige ist der REST -Service für den Frühling Security Construction, den der Herausgeber Ihnen vorgestellt hat. Erinnere dich an mich. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!