Heim >Java >javaLernprogramm >So passen Sie das Anmeldeformular in Spring Security an, um eine benutzerdefinierte Datenbank zu verwenden.
Um das Anmeldeformular in Spring Security anzupassen, um eine benutzerdefinierte Datenbank zu verwenden, können Sie die folgenden Schritte ausführen:
Erstellen Sie einen benutzerdefinierten UserDetailsService:
Implementieren Sie die UserDetailsService-Schnittstelle, um Benutzerdetails aus Ihrer benutzerdefinierten Datenbank zu laden.
Überschreiben Sie die Methode „loadUserByUsername“, um Ihre Datenbank nach den Benutzerdetails abzufragen.
Spring-Sicherheit konfigurieren:
Definieren Sie in Ihrer Spring Security-Konfiguration die UserDetailsService-Bean.
Konfigurieren Sie den AuthenticationManager für die Verwendung Ihres benutzerdefinierten UserDetailsService.
Passen Sie das Anmeldeformular an, indem Sie die URL der Anmeldeseite und die URL für die Anmeldeverarbeitung angeben.
Implementieren Sie das benutzerdefinierte Anmeldeformular:
Erstellen Sie eine JSP- oder HTML-Datei für das benutzerdefinierte Anmeldeformular.
Fügen Sie Eingabefelder für den Benutzernamen und das Passwort sowie eine Schaltfläche zum Senden hinzu.
Verwenden Sie zum Absenden des Formulars die in der Spring Security-Konfiguration angegebene Anmeldeverarbeitungs-URL.
Hier ist eine Beispielimplementierung:
Die öffentliche Klasse CustomUserDetailsService implementiert UserDetailsService {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { String query = "SELECT * FROM users WHERE username = ?"; User user = jdbcTemplate.queryForObject(query, new Object[]{username}, new UserRowMapper()); if (user == null) { throw new UsernameNotFoundException("User not found"); } return user; }
}
@Konfiguration
@EnableWebSecurity
Die öffentliche Klasse SecurityConfig erweitert WebSecurityConfigurerAdapter {
@Autowired
private CustomUserDetailsService customUserDetailsService;
@Autowired private PasswordEncoder passwordEncoder; @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(customUserDetailsService) .passwordEncoder(passwordEncoder); } @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/login").permitAll() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .loginProcessingUrl("/login") .defaultSuccessUrl("/welcome") .failureUrl("/login?error") .permitAll(); }
}
Erstellen Sie eine login.jsp-Datei (oder login.html) in Ihrem Verzeichnis src/main/webapp/WEB-INF/views (oder einem entsprechenden Speicherort):
8b05045a5be5764f313ed5b9168a17e6
In diesem Beispiel wird das Anmeldeformular an die /login-URL gesendet, bei der es sich um die in der Spring Security-Konfiguration angegebene Anmeldeverarbeitungs-URL handelt.
Indem Sie diese Schritte befolgen, können Sie das Anmeldeformular in Spring Security anpassen, um eine benutzerdefinierte Datenbank für die Benutzerauthentifizierung zu verwenden.
Das obige ist der detaillierte Inhalt vonSo passen Sie das Anmeldeformular in Spring Security an, um eine benutzerdefinierte Datenbank zu verwenden.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!