「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Spring Security のログイン フォームをカスタマイズしてカスタム データベースを使用する方法。

Spring Security のログイン フォームをカスタマイズしてカスタム データベースを使用する方法。

2024 年 7 月 31 日に公開
ブラウズ:635

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 を定義します。

カスタム UserDetailsS​​ervice を使用するように AuthenticationManager を構成します。

ログインページのURLとログイン処理のURLを指定して、ログインフォームをカスタマイズします。

カスタム ログイン フォームを実装する:

カスタム ログイン フォーム用の JSP または HTML ファイルを作成します。

ユーザー名とパスワードの入力フィールドと送信ボタンが含まれます。

Spring Security 構成で指定されたログイン処理 URL を使用してフォームを送信します。

実装例は次のとおりです:

  1. カスタム UserDetailsS​​ervice を作成する

パブリック クラス CustomUserDetailsS​​ervice は UserDetailsS​​ervice {
を実装します @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;
}

}

  1. Spring Security の構成

@構成
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private CustomUserDetailsS​​ervice CustomUserDetailsS​​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:if

この例では、ログイン フォームは /login URL に送信されます。これは、Spring Security 構成で指定されたログイン処理 URL です。

これらの手順に従うことで、Spring Security のログイン フォームをカスタマイズして、ユーザー認証にカスタム データベースを使用できます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/fullstackjava/how-to-customize-the-login-form-in-spring-security-to-use-a-custom-database-20mh?1権利侵害、削除するには、[email protected] までご連絡ください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3