首頁  >  文章  >  Java  >  如何在 Spring Security 中自訂登入表單以使用自訂資料庫。

如何在 Spring Security 中自訂登入表單以使用自訂資料庫。

WBOY
WBOY原創
2024-07-16 13:00:54608瀏覽

How to customize the login form in Spring Security to use a custom database.

要在 Spring Security 中自訂登入表單以使用自訂資料庫,可以按照以下步驟操作:

建立自訂 UserDetailsS​​ervice:

實作 UserDetailsS​​ervice 介面以從自訂資料庫載入使用者詳細資訊。

重寫 loadUserByUsername 方法以查詢資料庫中的使用者詳細資訊。

設定 Spring Security:

在 Spring Security 配置中,定義 UserDetailsS​​ervice bean。

設定 AuthenticationManager 以使用您的自訂 UserDetailsS​​ervice。

透過指定登入頁面 URL 和登入處理 URL 來自訂登入表單。

實作自訂登入表單:

為自訂登入表單建立 JSP 或 HTML 檔案。

包含使用者名稱和密碼的輸入欄位以及提交按鈕。

使用 Spring Security 設定中指定的登入處理 URL 來提交表單。

這是一個範例實作:

  1. 建立自訂 UserDetailsS​​ervice

公有類別 CustomUserDetailsS​​ervice 實作 UserDetailsS​​ervice {
@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;
}

}

  1. 設定 Spring Security

@配置
@EnableWebSecurity
公用類別 SecurityConfig 擴充 WebSecurityConfigurerAdapter {
@Autowired
私人 CustomUserDetailsS​​ervice customUserDetails​​ervice;

@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();
}

}

  1. 實作自訂登入表單

在 src/main/webapp/WEB-INF/views 目錄(或等效位置)中建立一個 login.jsp(或 login.html)檔案:




登入


登入




使用者名稱:



密碼:


登入


使用者名稱或密碼無效。
/c:如果

在此範例中,登入表單提交到 /login URL,這是 Spring Security 設定中指定的登入處理 URL。

依照下列步驟,您可以在 Spring Security 中自訂登入表單,以使用自訂資料庫進行使用者驗證。

以上是如何在 Spring Security 中自訂登入表單以使用自訂資料庫。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn