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

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

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

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

Java

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

Spring

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

Spring Boot

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

Q&A

1回答

2204閲覧

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

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プロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿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; }

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

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

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

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

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

dyxRZKg87iYEc4p

2021/10/25 10:50

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

2021/10/25 11:41

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

2021/10/26 11:47

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

回答1

0

どういう構成でどういうコードになっているのか分かりませんが、
投稿にユーザーIDなどログイン者の一意な情報を保存しておき、データ取得時にログイン者のユーザIDを検索条件に付加して検索すれば、質問にあるような問題は起きません。

投稿2021/10/23 09:08

m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問