パスワードのハッシュ化

パスワードのハッシュ化と、ログイン時の処理

bcrypt.hashメソッドを使って、ハッシュ化されたパスワードをusersテーブルにinsertする。

このままではログイン時にハッシュ化される前のパスワードでログイン出来ないので、、、

 

compareメソッドでユーザが入力したパスワードとテーブル上のパスワード(hash)を比較し、一致している場合はログイン処理を行うようにする。

重複チェック

ユーザ登録時のメールアドレス重複チェック

既に登録されているメールアドレスと同じものが登録されないようにする。

ユーザ登録のリクエストに入力されたメールアドレスをDBから検索し、重複があった場合に配列errorsにpushしてレスポンスとして返す。

※errorsは空入力チェックで既に定義されているため、フロントの変更は無し。

空チェックエラーの表示

入力値の空チェックエラーを画面に表示する

 

配列errorにエラーメッセージが格納されているので、格納されているメッセージをforEachで順番に出力する。

ユーザ登録画面はerror配列を受け取ることが必須になった(このままだと登録画面に遷移した際に定義されていない変数errorが存在するパターンがあり得る)ので、登録画面にgetリクエストを送った際に空のerrorを返すようにする。

バリデーション

入力値の空チェック

登録ボタンを押した際の処理に、ユーザ名、メールアドレス、パスワードの空チェックを追加する。

配列errorsにエラーメッセージを追加する処理を入れる。

 

errorsの要素数が0ならば次のユーザ登録処理に進み、要素数が0より大きい(空入力が存在する)場合、登録画面にリダイレクトする。

リダイレクト処理

リダイレクト処理について

バックエンドの処理でレスポンスとして画面を渡す際に、res.renderを使用する際には

res.render('hoge.ejs');

となるが、

リダイレクトする際には

res.redirect('/hoge');

hoge部分が変わる点に注意。