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

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

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

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

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

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

受付中

springでログインユーザー毎のセッションを実現したい

dyxRZKg87iYEc4p
dyxRZKg87iYEc4p

総合スコア21

Spring Security

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

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

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

1回答

0評価

0クリップ

731閲覧

投稿2021/10/23 09:01

編集2021/10/25 11:16

前提・実現したいこと

Eclipse SpringBootにて現在ポートフォリオ作成をしております。
日記のようなアプリを作成しており、ログイン機能・日記画面の中身まで作成できており、
ほとんど完成に近い状態なのですが、それぞれ違うユーザーでログインしても日記の
内容が同じものが表示されてしまいます。(掲示板のようにみんなが見れてしまう)
ログインユーザー毎に別セッションにしてprivateな日記にしたいと思っています。
スコープがsingletonだからだと思うのですが、sessionもしくはapplication
に変更すれば良いのでしょうか?

該当のソースコード

CREATE TABLE note ( id int(5) NOT NULL AUTO_INCREMENT, dateTime datetime, name varchar(20), title varchar(30), contents varchar(500) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS user ( user_id VARCHAR(50) PRIMARY KEY, password VARCHAR(100), role VARCHAR(50) ); ```### 該当のソースコード ```ここに言語名を入力 package com.example.demo.Dao; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import com.example.demo.entity.Note; @Repository public class NoteDaoImpl implements NoteDao { // データベース操作用のクラス private final JdbcTemplate jdbcTemplate; @Autowired public NoteDaoImpl(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Override public void create(Note note) { jdbcTemplate.update("INSERT INTO note(dateTime, title, name, contents) values(?,?,?,?)", note.getDateTime(), note.getTitle(), note.getName(), note.getContents()); } @Override public int update(Note note) { return jdbcTemplate.update("UPDATE note SET dateTime = ?, name = ?, title = ?, contents = ? WHERE id = ?", note.getDateTime(), note.getName(), note.getTitle(), note.getContents(), note.getId()); } @Override public int deleteById(int id) { return jdbcTemplate.update("DELETE FROM note WHERE id = ?", id); } @Override public List<Note> getAll() { String sql = "SELECT id, dateTime, name, title, contents FROM note ORDER BY id DESC"; List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql); List<Note> list = new ArrayList<Note>(); for (Map<String, Object> result : resultList) { Note note = new Note(); note.setId((int) result.get("id")); note.setDateTime(((Timestamp) result.get("dateTime")).toLocalDateTime()); note.setName((String) result.get("name")); note.setTitle((String) result.get("title")); note.setContents((String) result.get("contents")); list.add(note); } return list; } @Override public Optional<Note> findById(int id) { String sql = "SELECT id, dateTime, name, title, contents FROM note WHERE id = ?"; Map<String, Object> result = jdbcTemplate.queryForMap(sql, id); Note note = new Note(); note.setId((int) result.get("id")); note.setDateTime(((Timestamp) result.get("dateTime")).toLocalDateTime()); note.setName((String) result.get("name")); note.setTitle((String) result.get("title")); note.setContents((String) result.get("contents")); // NoteをOptionalでラップする Optional<Note> noteOpt = Optional.ofNullable(note); return noteOpt; } }

該当のソースコード

package com.example.demo.entity; import lombok.Data; @Data public class MUser { private String userId; private String password; private String role; }

該当のソースコード

package com.example.demo.entity; import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Note { private int id; private LocalDateTime dateTime; private String title; private String name; private String contents; }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

dyxRZKg87iYEc4p

2021/10/25 10:50

フィードバックしておらず申し訳ありませんでした。現在、回答いただいた内容をもとにデータベースを再度学習して理解を深めておりましたが、未だに出来ずにいます。回答いただいた部分に関すると思われるコードを追記で載せたいと思います。ご回答感謝しております。
m.ts10806

2021/10/25 11:41

できてないのでしたら「解決済み」にしてしまってはマズいのでは。
dyxRZKg87iYEc4p

2021/10/26 11:47

おっしゃる通りです。修正します。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Spring Security

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

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

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