Um das Anmeldeformular in Spring Security für die Verwendung einer benutzerdefinierten Datenbank anzupassen, 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.
Enthalten Sie Eingabefelder für den Benutzernamen und das Passwort sowie eine Schaltfläche zum Senden.
Verwenden Sie die in der Spring Security-Konfiguration angegebene Anmeldeverarbeitungs-URL, um das Formular zu senden.
Hier ist eine Beispielimplementierung:
ö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; }
}
@Aufbau
@EnableWebSecurity
ö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 Datei login.jsp (oder login.html) in Ihrem Verzeichnis src/main/webapp/WEB-INF/views (oder einem entsprechenden Speicherort):
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.
Durch Befolgen dieser Schritte können Sie das Anmeldeformular in Spring Security anpassen, um eine benutzerdefinierte Datenbank für die Benutzerauthentifizierung zu verwenden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3