Passportを使ってアプリケーションに認証機能を実装しよう
そもそもPassportとは何なのか
公式のドキュメントではこのように書かれています
Passport is authentication middleware for Node. It is designed to serve a singular purpose: authenticate requests. When writing modules, encapsulation is a virtue, so Passport delegates all other functionality to the application. This separation of concerns keeps code clean and maintainable, and makes Passport extremely easy to integrate into an application.
http://www.passportjs.org/docs/
簡単に訳すと(違ってたらすまぬ)
PassportはNode.jsのための認証ミドルウェアであり、単一の目的である認証のリクエストのみ果たすように設計されている
モジュールを記述する時に、カプセル化をすることはよいことなので、Passportはそれ以外の機能すべてをアプリケーションに委任します
この関係の分離がコードがわかりやすく、保守しやすくなり、Passportをアプリケーションに組み込みやすくします
つまり
認証についてはPassportを使うことでアプリケーションのそのものの機能と切り分けられるから、認証は俺に任せろ!っということですね
認証(authenticate)の初期設定をしよう
app.jsにpassportを読み込んで初期設定をしますが、設定を別のところに分けて書いて読み込む形にします
まあ何んとなくこの書き方は慣れてきた気がしますが、
app.jsには基本的に詳しく書かず、読み込みだけして利用するという記述だけになります
分けあって今回のコードは変更したところだけまとめて載せます(ローカルのデータふっとんだので残されてたデータのみです・・・)
まずはモジュールの読み込みで
const passport = require(‘passport’);
これはおきまりですね
そして、9行目のrequire(‘./config/passport’)(passport)
で設定を読み込んでます
ということで設定を
config>passport.jsに記入しているのでそちらをチェックしていきましょう
passport.jsの設定を確認しよう
設定を表しているコードはpassport configと書いているコードです
1~6行目で必要なモジュール読み込んで
7行目で外部から使えるようにexportしています
module.exports = function (passport) {設定}
8行目以降の設定の中身は
ほぼ公式のドキュメントのConfigureを参照しました
合わせてみていただくとよいと思います
こんな感じの設定になります
これで認証の設定が完了です
あとは実際にフォームで(POSTメソッドで users/login)に送信してきたときの処理users.jsに追記
passport.authenticate(’local’, で
ユーザー名(email)とパスワードでの認証
{}に実際にどういうケースでどう処理するかを設定
successRedirect: ‘/dashboard’, 認証が成功の場合 ⇒/dashboardへ
failureRedirect: ‘/users/login’, 認証が失敗の場合 ⇒/users/loginへ再度ログイン画面へ
failureFlash: true 失敗したときにフラッシュメッセージを有効にするかどうか失敗したときに設定されたメッセージを利用する
ここも公式のドキュメント通りなので確認しておきましょう
ほぼほぼ公式ドキュメントの通りです
bycriptを使ってhash値の照合をしているという点だけ違うという感じだと思います
あとはほぼそのままです
今回は以上です
YouTubeもよろしく! めちゃエラー出しまくりでした・・・がそのままお送りしております
コメント