IoT+WEBのためのホームサーバ計画の実装編21。ユーザのログイン周りをちょっと修正しますね
ログインまわりとかは、基本的にここでの主題ではないのでちょっとお茶を濁していましたが
自分でもわかりにくかったので、もう少しまともに説明しようかと思います。
まぁよくあるようなやつですが、機能は3つ。
●LOGIN
●新規ユーザ
●パスワードのリセット
です。
まぁ機能的にはたいしたものではないのですが、
イレギュラーな入力への対処とかをごく簡単にやってみます。
ログインのイレギュラー処理
イレギュラーをハネるのも、クライアント側(javascript)と、サーバ側(ここではPHP+DB)があるわけです。
まず、ログインIDをメールアドレスにしているわけなので、
メールアドレスとして成り立っているかどうかをjavascriptでチェックします。
これは、その他のイレギュラーチェックでも同様ですね。
あとは、パスワードが空文字じゃないかどうか。
クライアント側ではそのくらいでしょうか。
サーバ側へajaxした時に何を調べるかというと、
●そのユーザが登録されているか
●パスワードがあっているか
なのですが、その他、パスワードのリセットが行われた状態かどうかも必要になります。
もちろん、セキュリティ的に、あえて、【ユーザ名またはパスワードが違っています】みたいなようにすることも考えられますけどね。
そして、パスワードのリセットが行われた状態というのは、ユーザとしては登録されているけれども、、、っていう状態です。
パスワードのリセットは、
①【リセットのボタンを押す】➡②【mailでリセット自体を認証する】➡③【パスワードを再設定する】
という手順を踏むわけですが、②のリセット自体を認証していない状態はまだログインできなければダメなわけです。
だれかが勝手にメアド入れてリセットしちゃったら困るので。
まぁそんな機能も一応入れておかなくてはことになりますね。
新規ユーザ登録のイレギュラー処理
新規ユーザ登録の処理のイレギュラー処理は、
●そのユーザが登録されていないかどうか
●パスワードが設定されているか
あたりです。
もちろんユーザが登録されていないかどうかに関しては、
・登録されている
・登録しようとしている(mail認証が済んでいない)
も含まれますし、 mail認証が済んでいない 段階でリセットを押されたらどうするかとか、そんなことも含めて考えていきます。
パスワードリセットのイレギュラー処理
パスワードリセットのイレギュラー処理は、2段階になります。
まず、ボタンが押されてmailを送る部分。これは、
●そのユーザが登録されているか
のみですね。次に、認証が終わったあとはパスワードに入力になるので、
●パスワードが入力されているか(空じゃないかどうか)
あたりです。
結局のところ、入力項目のチェックとしては、
★ユーザ登録の有無
★メアドとして適切な文字か
★パスワードがちゃんと入っているか
あたりだけです。
面倒なのは、色んなタイミングで色んな入力をされたときとかです。
メール認証のクリックを2回したらどうなるかとか、ブラウザで2つ開いて微妙な時間差でこられたらどうするかとか。
まぁログインは頻繁に行うものでもないので、多少の時間差とかは、あと勝ちとかでも良いかと思いますけどね。
実際のフロー
ログイン処理
新規ユーザ登録
パスワードリセット
パスワードリセット処理は、ログイン処理と新規ユーザ登録を足したような機能となります。
この段階で、やっとパスワードの設定画面が現れます。
そりゃそうですよね。
メアドを知ってるだれかに勝手にリセットされちゃっても困りますからね。
パスワードの再設定
そして、最後にパスワードの設定です。
まぁこんなとこでしょ。
おしまいです。