質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Spring Security

Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。

Q&A

受付中

Spring Security POST送信した値が取得できていない

massan728
massan728

総合スコア33

Spring Security

Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。

0回答

0グッド

0クリップ

298閲覧

投稿2022/09/28 15:23

前提

spring security5.7でログイン機能を追加しようとしています。

UdemyのSpring security入門と
https://www.docswell.com/s/MasatoshiTada/KGVY9K-spring-security-intro#p1
を参考に作成しました。

実現したいこと

メールアドレスでログイン可能にする。

発生している問題・エラーメッセージ

イメージ説明
POST送信されたメールアドレスが引数のemailに入って欲しいのですが、現状何も入っていない状態になってしまっている。これを解決したい。

試したこと

デベロッパーツールを確認したところ、メールアドレスは送信されていることは確認できた。
htmlでのスペルミスがないかも確認したが、見つからなかった。

該当のソースコード

java

1@Service 2@RequiredArgsConstructor 3public class CustomUserDetailsService implements UserDetailsService { 4 5 private final LoginUserMapper loginUserMapper; 6 7 @Override 8 public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { 9 return loginUserMapper.findByEmail(email) 10 .map( 11 user -> new CustomUserDetails( 12 user.getEmail(), 13 user.getPassword() 14 ) 15 ) 16 .orElseThrow( 17 () -> new UsernameNotFoundException( 18 "Given email is not found." 19 ) 20 ); 21 } 22 23}

java

1@EnableWebSecurity 2@Configuration 3public class SecurityConfig { 4 5 @Bean 6 public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { 7 http.formLogin(login -> login 8 .loginProcessingUrl("/login") 9 .loginPage("/login") 10 .defaultSuccessUrl("/inventory/search") 11 .failureUrl("/login?error") 12 .permitAll() 13 ).logout(logout -> logout 14 .invalidateHttpSession(true) 15 .deleteCookies("JSESSIONID") 16 .logoutSuccessUrl("/login") 17 ).authorizeHttpRequests(authz -> authz 18 .requestMatchers(PathRequest.toStaticResources().atCommonLocations()) 19 .permitAll() 20 .mvcMatchers("/signup") 21 .permitAll() 22 .anyRequest().authenticated() 23 ); 24 return http.build(); 25 } 26 27 @Bean 28 public PasswordEncoder passwordEncoder() { 29 return new BCryptPasswordEncoder(); 30 } 31}

HTML

1<!DOCTYPE html> 2<html lang="ja" xmlns="http://www.w3.org/1999/xhtml" 3 xmlns:th="http://www.thymeleaf.org" 4 xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity5"> 5<head> 6 <meta charset="UTF-8"> 7 <title>Login Form</title> 8 <meta name="viewport" content="width=device-width, initial-scale=1"> 9 <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> 10 <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" rel="stylesheet"> 11 <link th:href="@{/css/login.css}" rel="stylesheet"> 12</head> 13<body> 14 15<div class="container"> 16 <div class="row"> 17 <div class="col-md-6 offset-md-3"> 18 <h2 class="text-center text-dark mt-5">ログインフォーム</h2> 19 <div class="card my-5"> 20 <div th:if=${param.error}><p>メールアドレスもしくはパスワードが違います</p></div> 21 <form action="#" th:action="@{/login}" method="post" class="card-body cardbody-color p-lg-5"> 22 23 <div class="text-center"> 24 <img src="https://cdn.pixabay.com/photo/2016/03/31/19/56/avatar-1295397__340.png" 25 class="img-fluid profile-image-pic img-thumbnail rounded-circle my-3" 26 width="200px" alt="profile"> 27 </div> 28 29 <div class="mb-3"> 30 <input type="text" class="form-control" id="email" name="email" aria-describedby="emailHelp" 31 placeholder="メールアドレス"> 32 </div> 33 <div class="mb-3"> 34 <input type="password" class="form-control" id="password" name="password" placeholder="パスワード"> 35 </div> 36 <div class="text-center"><button type="submit" class="btn btn-color px-5 mb-5 w-100">ログイン</button></div> 37 <div id="emailHelp" class="form-text text-center mb-5 text-dark"> 38 登録されていない方はこちらから 39 <a href="/signup" class="text-dark fw-bold"> 登録画面</a> 40 </div> 41 </form> 42 </div> 43 44 </div> 45 </div> 46 </div> 47 48<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script> 49<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF" crossorigin="anonymous"></script> 50 51</body> 52</html>

補足情報(FW/ツールのバージョンなど)

spring security 5.7

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Spring Security

Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。