カスタム データベースを使用するように 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 のログイン フォームをカスタマイズして、ユーザー認証にカスタム データベースを使用できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3