spring securityのログイン認証画面を作っています。
しかし、localhostで/loginFormにアクセスしても、
表示させたいloginForm.htmlではなく、添付したspring securityのデフォルトページのようなものがでてきます。
loginForm.htmlを表示させる場合、どのようにしたらよいか、ご教示願います。
buildgradle
1plugins { 2 id 'org.springframework.boot' version '2.4.1' 3 id 'io.spring.dependency-management' version '1.0.10.RELEASE' 4 id 'java' 5} 6group = 'com.example' 7version = '0.0.1-SNAPSHOT' 8sourceCompatibility = '1.8' 9 10repositories { 11 mavenCentral() 12} 13dependencies { 14 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 15 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 16 implementation 'org.springframework.boot:spring-boot-starter-web' 17 // springsecurityを依存関係に追加 18 implementation 'org.springframework.boot:spring-boot-starter-security' 19 // thymeleaf拡張ライブラリを依存関係に追加 20 implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' 21 runtimeOnly 'mysql:mysql-connector-java' 22} 23
loginService
1@EnableWebSecurity 2public class SecurityConfig extends WebSecurityConfigurerAdapter { 3 4 // ハッシュアルゴリズム 5 @Bean 6 public PasswordEncoder passwordEncoder() { 7 return new BCryptPasswordEncoder(); 8 } 9 10 @Override 11 protected void configure(HttpSecurity http) throws Exception { 12 // 認可の設定 13 http.authorizeRequests() 14 .antMatchers("/loginForm").permitAll() // loginFormは全ユーザーからアクセス可能 15 .anyRequest().authenticated(); // 許可した項目以外は認証を求める 16 17 // ログイン処理 18 http.formLogin() 19 .loginProcessingUrl("/login") //ログイン処理のパス 20 .loginPage("/loginForm") //ログインページの指定 21 .usernameParameter("email") //ログインページのメールアドレス 22 .passwordParameter("password") //ログインページのパスワード 23 .defaultSuccessUrl("/home", true) //ログイン成功時のパス 24 .failureUrl("/loginForm?error"); //ログイン失敗時のパス 25 26 // ログアウト処理 27 http.logout() 28 .logoutUrl("/logout") // ログアウト処理パス 29 .logoutSuccessUrl("/loginForm"); //ログアウト成功パス 30 }
loginController
1@Controller 2public class LoginController { 3 4 @GetMapping("/loginForm") 5 public String getLogin() { 6 return "loginForm"; 7 } 8}
loginForm
1<body> 2 <div th:if="${param.error}"> 3 <p>ユーザ名またはパスワードが違います。</p> 4 </div> 5 <form th:action="@{/login}" method="post"> 6 <div> 7 <label>メールアドレス: </label> 8 <input type="email" name="email"> 9 </div> 10 <div> 11 <label>パスワード: </label> 12 <input type="password" name="password"> 13 </div> 14 <div> 15 <input type="submit" value="ログイン"> 16 <!-- 自動でトークンを追加してくれている --> 17 <!-- <input type="hidden" name="_csrf" 18 value="33c7b13f-f3e2-44de-b0b1-eadb5e6ffbdb"> --> 19 </div> 20 </form> 21</body> 22```![出てきてしまうデフォルト画像](7182b869b0f1b7f77dc57e63aa84ab4e.png)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。