要在 Spring Security 中自訂登入表單以使用自訂資料庫,可以按照以下步驟操作:
建立自訂 UserDetailsService:
實作 UserDetailsService 介面以從自訂資料庫載入使用者詳細資訊。
重寫 loadUserByUsername 方法以查詢資料庫中的使用者詳細資訊。
設定 Spring Security:
在 Spring Security 配置中,定義 UserDetailsService bean。
設定 AuthenticationManager 以使用您的自訂 UserDetailsService。
透過指定登入頁面 URL 和登入處理 URL 來自訂登入表單。
實作自訂登入表單:
為自訂登入表單建立 JSP 或 HTML 檔案。
包含使用者名稱和密碼的輸入欄位以及提交按鈕。
使用 Spring Security 設定中指定的登入處理 URL 來提交表單。
這是一個範例實作:
公有類別 CustomUserDetailsService 實作 UserDetailsService {
@Autowired
私有 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; }
}
@配置
@EnableWebSecurity
公用類別 SecurityConfig 擴充 WebSecurityConfigurerAdapter {
@Autowired
私人 CustomUserDetailsService customUserDetailservice;
@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(); }
}
在 src/main/webapp/WEB-INF/views 目錄(或等效位置)中建立一個 login.jsp(或 login.html)檔案:
在此範例中,登入表單提交到 /login URL,這是 Spring Security 設定中指定的登入處理 URL。
依照下列步驟,您可以在 Spring Security 中自訂登入表單,以使用自訂資料庫進行使用者驗證。
以上是如何在 Spring Security 中自訂登入表單以使用自訂資料庫。的詳細內容。更多資訊請關注PHP中文網其他相關文章!