ログイン後はhttp://localhost:8080/sampleになりますが
Whitelabel Error Pageと表示され404が表示されます。
templateの下にsample.htmlを配置しています。
コードを見ても、どこが違うのか分からず。
おかしい箇所があれば、教えて頂きたいです。
java
1package com.example.demo; 2 3import org.springframework.stereotype.Controller; 4import org.springframework.ui.Model; 5import org.springframework.web.bind.annotation.GetMapping; 6import org.springframework.web.bind.annotation.PostMapping; 7 8@Controller 9public class SampleController { 10 @GetMapping("/login") 11 public String form() { 12 return "login.html"; 13 } 14 15 @GetMapping("/error1")//errorが発生した際はエラーメッセージを表示したいので違う処理に入るように制御する 16 public String getLoginError(Model model) { 17 model.addAttribute("ErrorMessage","*ユーザー名もしくはパスワードが一致しません"); 18 return "login"; 19 } 20 21 //デフォルトではPostでリクエストが発生。カスタマイズ時はユーザーが指定したmethodに従う。 22 @PostMapping("/login") 23 public String success() { 24 return "sample"; 25 } 26} 27
java
1package com.example.demo; 2 3import org.springframework.context.annotation.Configuration; 4import org.springframework.security.config.annotation.web.builders.HttpSecurity; 5import org.springframework.security.config.annotation.web.builders.WebSecurity; 6import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 7import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 8 9import org.springframework.beans.factory.annotation.Autowired; 10import org.springframework.context.annotation.Bean; 11import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 12import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 13import org.springframework.security.crypto.password.PasswordEncoder; 14 15 16 17/** 18 * SpringSecurityを利用するための設定クラス 19 * ログイン処理でのパラメータ、画面遷移や認証処理でのデータアクセス先を設定する 20 */ 21@Configuration 22@EnableWebSecurity 23public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 24 25 @Autowired 26 private UserDetailsServiceImpl userDetailsService; 27 28 @Bean 29 public PasswordEncoder passwordEncoder() { 30 BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); 31 return new BCryptPasswordEncoder(); 32 } 33 34 @Override 35 public void configure(WebSecurity web) throws Exception { 36 web.ignoring() 37 .antMatchers("/resources/**"); 38 } 39 40 @Override 41 protected void configure(HttpSecurity http) throws Exception { 42 http 43 .authorizeRequests() 44 .antMatchers("/login").permitAll() 45 .anyRequest().authenticated(); 46 47 http 48 .formLogin() 49 .loginPage("/login")//ログインページとして使用するurlを設定する 50 .usernameParameter("username")//Usernameのパラメータとして使用する項目のnameを設定する 51 .passwordParameter("password")//Passwordのパラメータとして使用する項目のnameを設定する 52 .failureUrl("/error1")//エラー発生時として使用するurlを設定する 53 .defaultSuccessUrl("/sample", true) 54 .permitAll();//エラー発生画面も未認証でアクセス出来るようにしないといけない。(この記述がないと指定のurlに遷移せずloginにリダイレクトされる) 55 56 } 57 58 /** 59 * 認証時に利用するデータソースを定義する設定メソッド 60 * ここではDBから取得したユーザ情報をuserDetailsServiceへセットすることで認証時の比較情報としている 61 */ 62 @Autowired 63 public void configure(AuthenticationManagerBuilder auth) throws Exception{ 64 //UserDetailsServiceを設定してDaoAuthenticationProviderを有効化する 65 auth.userDetailsService(userDetailsService). 66 //上記作成のエンコードを設定しハッシュ化する 67 passwordEncoder(passwordEncoder()); 68 } 69}
html
1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4 <meta charset="UTF-8"> 5 <title>ログイン</title> 6</head> 7<body> 8<p th:if="${ErrorMessage!=null}" th:text="${ErrorMessage}"> <!--ログインエラーの際はエラーメッセージを表示する --> 9<p>ログイン</p> 10 <form th:action="@{/login}" method="post"> 11 <div >ユーザー名</div> 12 <input type="text" id="username" name="username" placeholder="ユーザ名" required autofocus> 13 <div >パスワード</div> 14 <input type="password" id="password" name="password" placeholder="パスワード" required> 15 <div ><button type="submit">ログイン</button></div> 16 </form> 17</body> 18</html>
html
1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<meta charset="UTF-8"> 5<title>Insert title here</title> 6</head> 7<body> 8 ログイン完了 9</body> 10</html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/23 13:11