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

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

ただいまの
回答率

90.49%

  • Java

    14055questions

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

  • アルゴリズム

    420questions

    アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

  • メール

    262questions

    メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

ユーザ登録の一般的な流れについて

解決済

回答 7

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 2,191

lupus_dingo

score 254

WEBサービスにユーザ登録機能を実装します。

WEBサービスによってユーザ登録までの流れはいくつかあると思いますが、
以下の2パターンならどちらが望ましいでしょうか?

****パターン1****
入力画面(メールアドレス、ユーザ名、パスワードなど)
→POST
→メアドの重複など、エラーがなければ登録完了
→入力したメアドにリマインダー送信

****パターン2****
入力画面(メールアドレスのみ)
→POST
→入力したメアドにトークン付きのURLを記載し送信、セッションにも登録
→トークンをキーにセッションが存在していればクリック時に入力画面表示(ユーザ名、パスワードなど)
→POST
→登録完了
→入力したメアドにリマインダー送信

特に、初期入力画面で項目をメアドのみかそれ以外を含むかで迷っています。
アドバイスお願いします。

~追記~
みなさん回答ありがとうございます。
結論としてパターン2ベースで以下の流れで行うことにしました。

入力画面(メールアドレス、ユーザ名、パスワード)
→POST
→エラーがなければ入力したメアドにトークン付きのURLを記載し送信、キャッシュに登録
→URLクリック時、トークンをキーにキャッシュが存在していれば入力画面表示(ユーザ名、パスワード)
→POST
→ここでDBに登録し、リマインダー送信(パスワードに関しては難読化して登録)
→登録完了画面表示

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 7

+4

私ならパターン2を選びます。メールの生存確認が同時に行えるため、リマインダーなどの送信が失敗する可能性が減ります。
また、メールに記載されたトークンからの入力画面で、「パスワード」のみを入力させ、ログインにはメールアドレスとパスワードというのが、抵抗無くするっと登録できます。
で、ログインパスワードを決定したらアカウント設定ページに飛び、必要な情報を入れると言う流れを私なら考えます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/05 01:09

    私もパターン2の方が間違いが少なそうでいいと思ったのですが、初期表示でメアドのみのサービスって意外と少ないんでしょうか?
    フェイスブックもTwitterもYahooも初期表示で名前や住所の入力を求めていますね。

    キャンセル

  • 2016/04/05 01:41

    サイトの特性にもよると思います。フェイスブックは特に「実名登録」が肝なので、名前を必要とするし、Yahooもアカウント=メールアドレスの構成なので、ユーザー名入力が必須です。
    どのサービスがメールのみかは忘れてしまったので例に出せませんが、むやみに必須項目が多いと離脱率が高くなるとはいわれています。
    メールアドレスでログインと言う方法は、アカウント名を変更されても内部的に問題が無いので一考の価値ありだと思います。(たしかTwitterはアカウント名を変更可能)

    キャンセル

  • 2016/04/05 01:46

    有名どころでは http://medium.com/ でしょうか。(パスワードすらいりません)

    キャンセル

  • 2016/04/05 13:53

    回答ありがとうございます。
    どちらが正解というよりは展開するサービスによって
    使い分けた方がいいということがわかりました。
    参考にさせてもらいます。

    キャンセル

checkベストアンサー

+3

登録時に最初にメールアドレスだけを送るケースはあまり見かけないような気がします。なので、どちらかを選ぶならパターン1ですが、やはりメールアドレスの有効確認は必要だと思うので、パターン3として、

入力画面(メールアドレス、ユーザー名、パスワードなど)
→POST
→メールアドレス、ユーザー名の重複チェックなど
→エラーがなければ仮登録し、入力したメアドに確認のための文言とトークン付きのURLを送信
→トークン付きのURLを開く(GET)
→正式登録。確認画面
→登録したメアドにリマインダー送信 

このように、最初の入力では仮登録とし、メールアドレスの有効確認(=本人の最終的な同意)が取れた時点で正式登録というパターンが割と多いような気がします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/05 13:59 編集

    回答ありがとうございます。
    どちらが正解というよりは展開するサービスによって
    使い分けた方がいいということがわかりました。
    参考にさせてもらいます。

    キャンセル

+2

サイトの性格によって変わってくると思います。

ただメールを何度も経由する場合、その通信は平文(だったはず)になるので、セッションを維持する情報や個人情報の、メールでのやりとり回数は減らしたいと思ってしまいます。ですので「1」推し。
※「2」でもセッションは時限性でワンタイムでしょうし大丈夫だとは思います。
※必要な個人情報がメールアドレスのみとかなら、「2」が良さそうに思います。

私なら、「ユーザID,パスワード,メール,その他そのサービスが求める最低限必要な情報」を入力させて
問題が無ければ「ユーザID様登録が完了致しました。etc,覚えが無い場合はetc,登録情報に誤りが無いかユーザ情報ページにログインしてご確認ください。URL,etcetc」のようなリマインダを送信するかな...

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/05 13:54

    回答ありがとうございます。
    どちらが正解というよりは展開するサービスによって
    使い分けた方がいいということがわかりました。
    参考にさせてもらいます。

    メールの文面も参考人させてもらいます。

    キャンセル

+2

ステップを短くすれば脱落が減りますが・・私なら2です。
最近はメール以外での認証があるのと、アプリ化を視野にいれる(最初の部分だけアプリ内のブラウザで処理する)ことを考えると、メールだけ分離しておいたほうが、あとあと便利だからです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/05 14:00

    回答ありがとうございます。
    どちらが正解というよりは展開するサービスによって
    使い分けた方がいいということがわかりました。
    参考にさせてもらいます。

    キャンセル

+1

やはり、どのようなサービスなのかによるでしょうね

A)多くのユーザを獲得したい
→ 1

B)有効なユーザに絞りたい
→ 2

ざっくりとこんなところでしょうか

Aの場合は、
・入力が1度で済みユーザの負担が少ない
・つくりがシンプルで開発面でも保守面でも効率がよい
といった利点があげられます

ユーザは普通、あえて使われていないメールアドレスを入力しようとはしません
そのサイトが提供するサービスが受けたくて登録するのだから、ほとんどの人が受信可能なメールアドレスを入力します

しかし、悪意を持った人が故意に大量ユーザ登録をすることも考えられます
また得られるサービスの内容が、ユーザ登録の手間よりも価値があればユーザは一生懸命に手続をしてくれるでしょう

それならば B でよいと思います

Bの場合、最初の入力では仮登録とし、メールアドレス向けにワンタイムURLを送り、正式登録のための初回ログインをお願いします
一定期間、初回ログインが無ければその仮登録は削除します
最低限こうしておけば、無差別に登録するような輩がいても無効なユーザをある程度除外できます

どちらの場合でも、最後に正式登録したことを通知するメールを出すかどうかは必須ではないと思いますが、正式登録した旨の通知、サイト入り口のURL、登録解除用のURL、問い合わせ先、が一緒に書かれていれば、なにかあっても「このメールを残しておけば大丈夫」と安心するでしょう

以上ご参考まで

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/05 13:49

    > ユーザは普通、あえて使われていないメールアドレスを入力しようとはしません
    > そのサイトが提供するサービスが受けたくて登録するのだから、ほとんどの人が受信可能なメールアドレスを入力します

    使わないメールアドレスを入力される事よりも、自分のメールアドレスを間違えて入力されることが案外多い印象があります。なので間違い入力の対応策としては空メールを送ってもらうのが現実的なのかもしれません。

    キャンセル

  • 2016/04/05 14:18

    回答ありがとうございます。
    確かにメアドの入力ミスはありますのでいずれにせよリマインダー送信は必要になりそうですね。
    どちらが正解というよりは展開するサービスによって
    使い分けた方がいいということがわかりました。
    参考にさせてもらいます。

    キャンセル

0

terateilの場合はパターン1のようですね。
1回の入力ですべて終わるので好みの問題かもしれませんが①の方がすっきりしていて
簡潔なので良いと感じております。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/05 01:03

    フェイスブックもパターン1に近いようでした。
    実装もパターン1の方が楽そうですが、kei344さんのおっしゃる通り、メールの生存確認は送信しないとわからないのでパターン2の方が間違いが少ないような気がします。

    キャンセル

0

メールアドレスもらって何がしたいのですか?
ビジネスの戦略上他人に教えられなくても明確にあるのであれば2は魅力的ですが、
1のほうが圧倒的にサービス利用までの障害が少なく、無料ユーザーを集めるには有利です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/05 14:16

    回答ありがとうございます。

    > メールアドレスもらって何がしたいのですか?

    思いのほかというか、今までで一番回答が得られたのでちょっと申し訳ないですが、
    自身用にユーザ管理機能を含めたWEBツールのフレームワークを作成し、今後の業務に役立つ知識を取り入れることが目的です。
    なので集客の戦略などはまだ考えていません。
    ただし、独自ドメインを取得して公開する予定なので間違いのないシステムを開発しようと思っています。

    キャンセル

  • 2016/04/05 22:21

    返信ありがとうございます。
    個人情報は=リスクなので、何がしたいかは大事だと思ってます。
    私は個人でWebアプリを作るときに「=リスク」を最も意識して、自分サーバ上のDBに持たせないためにOAuthを採用しました。

    githubやbitbucket、trelloのような海外製Webアプリはメールアドレスとパスワードの2つだけですぐに始められるケースが多いように思えます。
    対エンジニア、ビジネスマン、学生…サービスの性質やユーザーの性質でいろんな最適解があると思います。
    私もまだまだ若輩者ですが、お互い頑張っていきましょう。

    キャンセル

  • 2016/04/06 11:44

    ユーザ情報をテーブルに持たずにsnsなどのログインapi機能で代用するということでしょうか?

    テーブルに持たせないという考えはなかったので勉強になります。TwitterOauthとかでしょうか?
    仕組みや使い方がわからないので調べてみます。

    キャンセル

  • 2016/04/06 14:04

    そうです。
    様々なWebアプリのTwitterアカウントでログインみたいなあれです。
    複雑ではあるのですが、一意の公開用IDを受け取る事が出来ます。
    PHPやJava、Node.jsでは公式でライブラリを配布してくれるものもあるので挑戦してみると面白いです。

    Usersテーブルのカラムを「id, provider, provider_id」等のようにしておく事で、
    サーバーのDBに名前もメールアドレスもないような運用も可能です。

    キャンセル

  • 2016/04/07 08:49

    回答ありがとうございます!
    oauthの方はまだ調べられてないですが、Twitter、フェイスブックからのログインも可能にすることにしました。
    とりあえずは自身のDBで管理する機能を実装するのでそれが済んだら別途質問するかもしれません。

    キャンセル

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

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Djangoでメール送信するプログラムについて

    ユーザの新規登録をする仕組みを作成しています。 IDやメールアドレス、氏名などを入力し、送信ボタンをクリックすると 「新規登録完了しました」といったメールを送信したいと思っています

  • 受付中

    ソーシャルログイン

    Facebookでログインして見れるWEBサイトを作りたいのですが、その方法が調べてもよくわかりませんでした。 何が必要なのかもよくわかっていません。 ログインした人の情報の取得方

  • 解決済

    ログイン型掲示板のセキュリティ対策

    現在,練習用にログイン型掲示板の制作を模索しています.その中で,Webアプリケーションのセキュリティ知識が不足しているため,いくつかご教授いただければ幸いです. ログイン型掲示板

  • 解決済

    PHPにおけるクラス図

    会社から、「オブジェクト指向で会員制のサイト制作」を課題に挙げられています。 私は今まで手続き型のソース記述しかしていなくて、オブジェクト指向な記述をしていなくて オブジェ

  • 解決済

    会員制サイト:メールアドレスでログイン

    前提・実現したいこと Qiita:PHPとMySQLで新規登録とログインを実装する(PDO使用)を参考に、PHPで会員制サイトを作っています。 このサイトで作れるものでは、ID

  • 解決済

    CakePHP3 PHPUnitテストでログイン情報をデータベースをもとに使いたい

    前提・実現したいこと Cakephp3.4.9 PHPUnit 6.3.1 usersテーブルに保存されているユーザーデータ(id,email,password)を持っ

  • 解決済

    入力されたEmailとパスワードをまずセッション変数に格納するのはまずい?

    PHPでログイン機能を作る際に、入力されたEmailとパスワードをまずセッション変数に格納することは セキュリティー的にやめた方がよいでしょうか? ログインフォーム→ログインチ

  • 受付中

    エラー時にパスワードがクリアされる使用の理由は?

    巷にあふれている、 新規登録機能の仕様についての質問です。 新規登録で、空欄や入力ミスなどで再入力になった場合、 なぜ入力済のパスワードが、正誤に関わらず、クリアされるのでしょうか

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

  • Java

    14055questions

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

  • アルゴリズム

    420questions

    アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

  • メール

    262questions

    メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。