カスタム データベースを使用するように Spring Security のログイン フォームをカスタマイズするには、次の手順に従います。
カスタム UserDetailsService を作成します:
UserDetailsService インターフェイスを実装して、カスタム データベースからユーザーの詳細を読み込みます。
loadUserByUsername メソッドをオーバーライドして、データベースにユーザーの詳細をクエリします。
Spring Security を構成する:
Spring Security 構成で、UserDetailsService Bean を定義します。
カスタム UserDetailsService を使用するように AuthenticationManager を構成します。
ログイン ページ URL とログイン処理 URL を指定して、ログイン フォームをカスタマイズします。
カスタム ログイン フォームを実装します:
カスタム ログイン フォーム用の JSP または HTML ファイルを作成します。
ユーザー名とパスワードの入力フィールドと送信ボタンを含めます。
Spring Security 構成で指定されたログイン処理 URL を使用してフォームを送信します。
実装例は次のとおりです:
パブリック クラス CustomUserDetailsService は 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; }
}
@構成
@EnableWebSecurity
public class SecurityConfig extends 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(); }
}
src/main/webapp/WEB-INF/views ディレクトリ (または同等の場所) にlogin.jsp (またはlogin.html) ファイルを作成します。
この例では、ログイン フォームは /login URL に送信されます。これは、Spring Security 構成で指定されたログイン処理 URL です。
これらの手順に従うことで、Spring Security のログイン フォームをカスタマイズして、ユーザー認証にカスタム データベースを使用できます。
以上がSpring Security のログイン フォームをカスタマイズしてカスタム データベースを使用する方法。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。