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

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

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

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

0回答

678閲覧

投稿する際にログインユーザーの情報をDBに保存したい

Kondo93007118

総合スコア5

Spring Security

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/10/20 06:43

前提・実現したいこと

お世話になります。
SpringSecurityでログインしているユーザー情報を投稿する際にDBに保存したいと考えております。
現在はuseridを直接formに入力して投稿しているので、入力せずにログイン情報を投稿に紐付けたいです。
SpringSecurityでのログイン認証は実装済みです。

該当のソースコード

Recruit

java

1package com.recruit.model; 2 3import javax.persistence.Entity; 4import javax.persistence.GeneratedValue; 5import javax.persistence.GenerationType; 6import javax.persistence.Id; 7import javax.persistence.JoinColumn; 8import javax.persistence.ManyToOne; 9 10import lombok.Getter; 11import lombok.Setter; 12 13@Getter 14@Setter 15@Entity 16public class Recruit { 17 18 @Id 19 @GeneratedValue(strategy = GenerationType.AUTO) 20 private Long id; 21 22 private String mashine; 23 24 private String reason; 25 26 private String friendId; 27 28 private String game; 29 30 @ManyToOne 31 @JoinColumn(name="user_id") 32 private SiteUser user; 33 34}

RecruitController

java

1package com.recruit.controller; 2 3import org.springframework.beans.factory.annotation.Autowired; 4import org.springframework.security.core.Authentication; 5import org.springframework.stereotype.Controller; 6import org.springframework.ui.Model; 7import org.springframework.validation.BindingResult; 8import org.springframework.validation.annotation.Validated; 9import org.springframework.web.bind.annotation.GetMapping; 10import org.springframework.web.bind.annotation.ModelAttribute; 11import org.springframework.web.bind.annotation.PathVariable; 12import org.springframework.web.bind.annotation.PostMapping; 13 14import com.recruit.model.Recruit; 15import com.recruit.repository.RecruitRepository; 16 17import lombok.RequiredArgsConstructor; 18 19@RequiredArgsConstructor 20@Controller 21public class RecruitController { 22 @Autowired 23 private final RecruitRepository recruitRepository; 24 25 @GetMapping("/index") 26 public String index(Authentication loginUser,Model model) { 27 model.addAttribute("username",loginUser.getName()); 28 model.addAttribute("recruits",recruitRepository.findAll()); 29 return "index"; 30 } 31 32 @GetMapping("/new") 33 public String addRecruit(@ModelAttribute Recruit recruit,Authentication loginUser,Model model) { 34 model.addAttribute("username",loginUser.getName()); 35 return "form"; 36 } 37 38 @PostMapping("/process") 39 public String process(@Validated @ModelAttribute Recruit recruit,BindingResult result, Authentication loginUser) { 40 if(result.hasErrors()) { 41 return "form"; 42 } 43 recruitRepository.save(recruit); 44 return "redirect:/index"; 45 } 46 47 @GetMapping("/edit/{id}") 48 public String editRecruit(@PathVariable Long id, Model model) { 49 model.addAttribute("recruit",recruitRepository.findById(id)); 50 return "form"; 51 } 52 53 @GetMapping("/delete/{id}") 54 public String deleteRecruit(@PathVariable Long id) { 55 recruitRepository.deleteById(id); 56 return "redirect:/index"; 57 } 58}

form.html

HTML

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<meta charset="UTF-8"> 5<th:block th:insert="fragments/base :: header"></th:block> 6</head> 7<body id="page-top"> 8<th:block th:insert="fragments/header"></th:block> 9 <div id="wrapper"> 10 <div id="content-wrapper" class="d-flex flex-column"> 11 <div id="content"> 12 <div class="container-fluid"> 13 <!-- Data --> 14 <div class="card shadow my-4"> 15 <div class="card-header py-3" > 16 <h6 class="m-0 font-weight-bold text-primary">募集投稿</h6> 17 </div> 18 <div class="card-body"> 19 <div class="table-responsive"> 20 <form th:action="@{/process}" th:object="${recruit}" method="post"> 21 <input type="hidden" th:field="*{id}"> 22 <div class="form-group"> 23 <label for="name">機種</label> 24 <input type="text" class="form-control" th:errorclass="is-invalid" th:field="*{mashine}"> 25 <div class="invalid-feedback" th:errors="*{mashine}"></div> 26 </div> 27 <div class="form-group"> 28 <label for="name">募集内容</label> 29 <input type="text" class="form-control" th:errorclass="is-invalid" th:field="*{reason}"> 30 <div class="invalid-feedback" th:errors="*{reason}"></div> 31 </div> 32 <div class="form-group"> 33 <label for="name">フレンドコード</label> 34 <input type="text" class="form-control" th:errorclass="is-invalid" th:field="*{friendId}"> 35 <div class="invalid-feedback" th:errors="*{friendId}"></div> 36 </div> 37 <div class="form-group"> 38 <label for="name">ゲーム名</label> 39 <input type="text" class="form-control" th:errorclass="is-invalid" th:field="*{game}"> 40 <div class="invalid-feedback" th:errors="*{game}"></div> 41 </div> 42<!-- ここを入力せずに保存できるようにしたい --> 43 <div class="form-group"> 44 <label for="name">ユーザー名</label> 45 <input type="text" class="form-control" th:errorclass="is-invalid" th:field="*{user}"> 46 <div class="invalid-feedback" th:errors="*{user}"></div> 47 </div> 48 49 50 <hr class="sidebar-divider my-4"> 51 52 <button class="btn btn-primary btn-block col-md-4"> 53 <i class="fas fa-edit fa-fw"></i> 54 <span class="text">投稿する</span> 55 </button> 56 </form> 57 </div> 58 </div> 59 </div> 60 </div> 61 </div> 62 </div> 63 </div> 64</body> 65</html>

試したこと

loginUser.getName()で現在ログインしているユーザーを表示できたので、loginUser.getId()でidを取得しController側でsavaできないか試しましたができませんでした。

補足情報(FW/ツールのバージョンなどに問題に対して試したことを記載してください。

SpringBoot(2.3.4)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問