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

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

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

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

4回答

1310閲覧

ログイン時のユーザーテーブルについて、氏名とパスワードが同一のユーザーが複数存在した場合の対応

SZR0601

総合スコア22

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

1クリップ

投稿2021/12/29 14:53

編集2021/12/30 04:48

前提

以下のテーブル定義を基に質問させて頂きます。
イメージ説明

なお、本質問は以下URLの質問内容が曖昧になってしまったため作り直した質問となります。
https://teratail.com/questions/376003

状態

スマホアプリを作成しており、ログインシステム実装のためユーザーテーブルを設計しています。

知りたいこと

この定義ではメールアドレスの情報からユーザー名やパスワードが同一でも、ログイン時に正しいユーザーでログインできると思います。

しかし、作ろうとしているスマホアプリではメールアドレスの情報はいらないため、できれば使いたくないと考えています。
また、ユーザー名やパスワードは一意制約などを設けずに、自由に設定したいと考えています。

メールアドレスをユーザーテーブルに含まずに、ユーザー名やパスワードが同一でもログインする時に正しいユーザーでログインする方法を知りたいです。

よろしくお願いいたします。

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

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

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

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

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

hoshi-takanori

2021/12/29 16:23

スマホアプリの場合、ログインというか初回利用時に一意な ID (質問者さんのユーザーテーブルのユーザー ID とか) を割り当てれば (悪用防止のためにトークン的なものを付与することになりますが)、パスワードさえも不要にできないことはないです。ただし、機種変更などの対応が面倒くさくなりますが。 また、パスワードをユーザーを特定するための情報の一部として使うのは間違いです。そもそもパスワードは平文 (そのままの値) ではなく、ハッシュ化して保存する必要がありますが、その際に乱数 (ソルト) を加えるので同じパスワードでも DB 上は異なるデータになります。
退会済みユーザー

退会済みユーザー

2021/12/29 21:21

前のスレッド https://teratail.com/questions/376003 の仕切り直しですよね。その事を質問欄を編集して前のスレッドの url と共に書いてください。
SZR0601

2021/12/30 04:55 編集

hoshi-takanoriさん ご回答いただき、ありがとうございます。 確かにパスワードはハッシュ化するからユーザー特定情報にはできませんね。 一意のIDは端末にファイルとして保存する認識であっていますか。 お手数ですが、ご回答いただければと存じます。
SZR0601

2021/12/30 04:56

SurferOnWwwさん 前の質問ではお世話になりました。 上記内容について対応いたしました。
guest

回答4

0

ユーザー名やパスワードは一意制約などを設けずに、自由に設定したい

前のスレッドと同じことを書きますが、そういうのは一般的ではない、と言うより認証システムとしてあり得ない思います。少なくともユーザー名は一意にしないと。

認証というのは「あなたは誰?」という問いかけに答えてもらって、誰だかを明確にするものです。

同じユーザー名同じパスワードの人が複数いては、認証システムが成り立ちません。

投稿2021/12/29 21:31

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

SZR0601

2021/12/30 04:44

前の質問から引き続きご回答いただきありがとうございます。 基本的にはメールアドレスなどの一意になり得る情報を使ってユーザーテーブルを構成するという事ですね。
退会済みユーザー

退会済みユーザー

2021/12/30 07:44

いや、メールアドレスでなくユーザー名を一意にすれば良いと思いますが。そもそもメールアドレスは含めたくないのですよね?
guest

0

ログインの処理で受け取る情報のなかに一意性のあるものが含まれないと、一意にユーザーを決定するのは不可能だと思います。

投稿2021/12/29 15:39

編集2021/12/29 15:39
wsb

総合スコア194

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

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

SZR0601

2021/12/30 04:25

ご回答いただきありがとうございます。 やはりそうですよね。 データベースの情報でログインする方式で進める際は、メールアドレスを使うことを検討します。
guest

0

ベストアンサー

スマホアプリを作成しており、ログインシステム実装のためユーザーテーブルを設計しています。

スマホアプリであれば、デバイスに一意の識別子を振ってしまえばよいです。
事実上、デバイスに振られた ID + パスワードの認証となり、端末変更時に一定の手順を踏む必要が出てきますが、まぁスマホであればそれほど違和感のない実装だと思います。

投稿2021/12/30 02:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

SZR0601

2021/12/30 05:00 編集

ご回答いただきありがとうございます。 デバイスに一意の識別子を振るという点で、2点質問させてください。 1.DBに端末IDカラム等を設けて、割り振った一意の識別子をそのカラムに登録していく認識であっていますか? 2.[一意の識別子をデバイスに割り振る]=[デバイスに一意の識別子をファイルとして保存する]という認識であっていますか? お手数ですが、ご回答いただければと存じます。
退会済みユーザー

退会済みユーザー

2021/12/30 23:26 編集

1 はDB を前提とするなら PK として作り直すなり id を置き換えるなり、カラムを追加するなり好きなようにすると良いと思います。ただ、PK として使用するならそれなりの覚悟(と設計)が必要ですね。 2 はデバイス向けの開発ツールの機能に従うのが良いと思いますよ。
SZR0601

2021/12/31 01:27

ご回答いただきありがとうございます。 上記の内容で進めてみようと思います。
guest

0

ただ単に設計を間違えているだけです。
Googleアカウント認証を使えばいいと思います。

投稿2021/12/30 01:30

編集2021/12/30 01:31
qqfsdfsafd

総合スコア599

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

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

qqfsdfsafd

2021/12/30 04:20

低評価したやつ頭大丈夫か?
SZR0601

2021/12/30 04:45

ご回答いただきありがとうございます。 Googleアカウント認証について、勉強します。
YT0014

2021/12/30 05:45

設計に問題があるとの指摘は理解できますが、"Googleアカウント認証"への移行を勧める必然性が理解できません。 ユニークなキー(メールアドレス)を持てば、現状のシステムの流用でログインができると読めますので、それを排するべき理由の記述が必要と思われます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問