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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

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

Q&A

解決済

2回答

1287閲覧

spring security でログインしているidをpost で送りたい

Yoshi--

総合スコア62

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

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

0グッド

0クリップ

投稿2017/07/07 03:15

編集2017/07/07 04:59

教えてください

html

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org" 3 xmlns:sec="http://www.thymeleaf.org/extras/spring-security"> <!-- ThymeleafのSpring Security連携機能の名前空間を設定 --> 4<head> 5 <meta charset="utf-8"/> 6 <title>婚活サイト</title> 7 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" 8 th:href="@{/webjars/bootstrap/3.3.7/css/bootstrap.min.css}"/> 9 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" 10 th:href="@{/webjars/bootstrap/3.3.7/css/bootstrap-theme.min.css}"/> 11</head> 12 13<body> 14 15<div class="container"> 16 17 <h2> 18 <span sec:authentication="principal.user.mail">メアド</span> 19 <!-- sec:authenticationで認証ユーザー情報にアクセスできる 、principalプロパティでUserDetailsオブジェクトにアクセスできるので、principal.user.mailでログインユーザー名が分かる--> 20 さん、ログイン中 21 </h2> 22 23 24 25 <form th:action="@{/logout}" method="post"> 26 <input type="submit" class="btn btn-default btn-xs" value="ログアウト" /> 27 </form> 28 29 <form th:action="@{/konkatsu/createProfile}" th:object="${profileForm}" class="form-signin" enctype="multipart/form-data" method="post" ><!-- th:actionでformタグのaction属性の内容を置換できる --> 30 <!-- action:フォームの送信ボタンを押して送信されるデータの送信先URLを指定する --> 31 <!-- th:object="${profileForm}":profileFormクラスのnameなどを使えるようにする --> 32 33 <!-- 部品がテキストフィールドなら初期値として入力欄に表示されます。テキストが書き換えられればそれが value値になり、name属性とセットで送信されます。 34 また、ラジオボタンやチェックボックスでは、選択された値の名称となり、name"src/main/resources/templates/konkatsu/profileForm.html"属性とセットで送信されます。 35 送信やリセットボタンなどの場合はボタン上に表示されます--> 36 37 <h2 class="form-signin-heading">Myプロフィールフォーム</h2> 38 39 <div th:if="${param.error}" class="alert alert-danger"> 40 正しく入力してください。 41 </div> 42 43 44 45 <span sec:authentication="principal.user.userId">ログインID表示</span> 46 47 <input type="hidden" name="id" th:value="${user.userId}"/> 48 49 50 <div class="form-group" > 51 <label>氏名</label> 52 <!-- プログラムに送信するデータに名前を付けるのがname属性 --> 53 <input type="text" class="form-control" name="name" placeholder="(例) 山田太郎" required="required" 54 autofocus="autofocus"/> 55 </div> 56 57 <div class="form-group"> 58 <label>性別</label> 59 <select class="form-control" name="genderId" > 60 <option value="1"></option> 61 <option value="2"></option> 62 </select> 63 </div> 64 65 <div class="form-group"> 66 <label>生年月日</label> 67 <input type="text" class="form-control" name="birthday" placeholder="(例) 2017-01-01" required="required"/> 68 </div> 69 70 <div class="form-group"> 71 <label>身長</label> 72 <input type="text" class="form-control" name="height" placeholder="(例)180cm" required="required"/> 73 </div> 74 75 <div class="form-group"> 76 <label>職業</label> 77 <select class="form-control" name="occupationId" > 78 <!-- <option value='' disabled selected style='display:none;'>職業</option> --> 79 <option value="1">公務員系</option> 80 <option value="2">医療・介護・福祉系</option> 81 <option value="3">教育系</option> 82 <option value="4">金融系</option> 83 <option value="5">IT・電気・電子系</option> 84 <option value="6">製造・建築・土木系</option> 85 <option value="7">アート・デザイン系</option> 86 <option value="8">音楽・イベント系</option> 87 <option value="9">芸能・マスコミ系</option> 88 <option value="10">サービス系</option> 89 <option value="11">飲食系</option> 90 <option value="12">ファッション・美容系</option> 91 <option value="13">スポーツ・インストラクター系</option> 92 <option value="14">自営業</option> 93 <option value="15">その他</option> 94 </select> 95 </div> 96 97 <div class="form-group"> 98 <label>年収</label> 99 <input type="number" class="form-control" name="income" placeholder="(例)600万円" required="required"/> 100 </div> 101 102 <div class="form-group"> 103 <label for="InputTextarea">自己紹介文</label> 104 <textarea class="form-control" name="text" rows="6" placeholder="自己PRをしてください"></textarea> 105 </div> 106 107 <div class="form-group"> 108 <label>プロフィール画像</label> 109 <input type="file" class="form-control" name="image" placeholder="写真" required="required"/> 110 </div> 111 112 113 <button class="btn btn-lg btn-primary btn-block" type="submit">登録する</button> 114 </form> 115 116 <form th:action="@{/konkatsu/list}" method="get"> 117 <input type="submit" class="btn btn-default" value="ユーザー一覧へ"/> 118 </form> 119 120</div> 121 122 123</body> 124</html> 125

ログインしているユーザーIDは

<span sec:authentication="principal.user.userId">

で表示できるのですが

ログインしているIDをpostで送って
プロフィール登録をしようと思っております

その場合

<input type="hidden" name="id" th:value=" "/>

??

どのように記述すれば良いのでしょうか??

LoginUserDetails

java

1//UserDetailsの実装クラス 2 3package com.example.konkatsu.service; 4 5import org.springframework.security.core.authority.AuthorityUtils; 6 7import com.example.konkatsu.domain.User; 8 9import lombok.Data; 10 11@Data 12public class LoginUserDetails extends org.springframework.security.core.userdetails.User{ 13 private final User user; 14 15 public LoginUserDetails(User user){ 16 super(user.getMail(), user.getPass(), AuthorityUtils.createAuthorityList("ROLE_USER")); 17 this.user = user; 18 } 19 20} 21

LoginUserDetailsService

java

1//usersテーブルから取得した情報を用いて LoginUserDetailsを作るクラス 2 3 4 5package com.example.konkatsu.service; 6 7import org.springframework.beans.factory.annotation.Autowired; 8import org.springframework.security.core.userdetails.UserDetails; 9import org.springframework.security.core.userdetails.UserDetailsService; 10import org.springframework.security.core.userdetails.UsernameNotFoundException; 11import org.springframework.stereotype.Service; 12 13import com.example.konkatsu.domain.User; 14import com.example.konkatsu.repository.RegisterUserRepository; 15 16@Service 17public class LoginUserDetailsService implements UserDetailsService { 18 19 @Autowired 20 RegisterUserRepository registerUserRepository; 21 22 @Override 23 //loadUserByUsernameでは、UserDetails形式で値を返すという宣言 24 public UserDetails loadUserByUsername(String mail) throws UsernameNotFoundException { 25 User user = registerUserRepository.findByMail(mail); 26 if(user == null){ 27 throw new UsernameNotFoundException("ユーザーが見つかりません"); 28 } 29 return new LoginUserDetails(user); //UserDetails形式で値を返すという宣言 30 } 31} 32

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

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

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

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

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

mr-hisa-child

2017/07/07 03:56

クライアントから送るのではなく、サーバ側で取得するのではダメですか?
Yoshi--

2017/07/07 03:58

回答ありがとうございます。それはどのようにするのでしょうか?
mr-hisa-child

2017/07/07 04:37 編集

UserDetailsの実装クラスUserを継承したクラスなど作成していませんか?あったら、載せてほしいです。
Yoshi--

2017/07/07 05:00

追加いたしました。まだ追加するものが必要でしたらお教えください
guest

回答2

0

ベストアンサー

ソースの追加ありがとうございます。

以下で取得できませんか?

java

1Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 2int userId = ((User)principal).getUserId();

投稿2017/07/07 05:02

mr-hisa-child

総合スコア294

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

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

Yoshi--

2017/07/07 05:05 編集

ありがとうございます どのクラスに追加したらよいのでしょうか?
mr-hisa-child

2017/07/07 05:07

リクエストを受け取るクラスだと思います。 でも、プログラムの全体像が見えないので、Yoshi--さんに判断していただきたいです。
Yoshi--

2017/07/07 05:13

ありがとうございます。 ちょっと頭が混乱していますが 参考にさせていただきます ありがとうございました!
guest

0

せっかくログインしているのに、別のユーザーIDを入力できる仕組みにしてしまうとマズイのではないでしょうか。

投稿2017/07/07 04:08

A-pZ

総合スコア12011

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

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

Yoshi--

2017/07/07 04:13

回答ありがとうございます すいません やりたいことは ログインしているユーザーが 自分のプロフィールを登録できるようにしたいです 説明が分かりづらくてすいません
A-pZ

2017/07/07 07:36

mr-hisa-childさんが回答できそうですので、そちらの解決法をお試しください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問