[解決済み] パスポートの理解 シリアライズ デシリアライズ
質問
Passportのserializeとdeserializeメソッドのワークフローを素人にどう説明するのか。
-
はどこにあるのでしょうか?
user.id
の後にpassport.serializeUser
が呼び出されましたか? -
を呼び出しています。
passport.deserializeUser
の直後で、ワークフローのどこに位置するのでしょうか?// used to serialize the user for the session passport.serializeUser(function(user, done) { done(null, user.id); // where is this user.id going? Are we supposed to access this anywhere? }); // used to deserialize the user passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); });
まだ、頭の中が整理できていません。私は完全に動作するアプリを持っており、いかなる種類のエラーにも遭遇していません。
ここで何が起こっているのか、正確に理解したいのです。
どんなことでもご相談ください。
解決方法は?
<ブロッククオート-
どこが
user.id
の後にpassport.serializeUser
が呼び出されたのですか?
の第2引数で指定した)ユーザーIDを入力します。
done
関数) はセッションに保存され、後でそのオブジェクト全体を
deserializeUser
関数を使用します。
serializeUser
は、ユーザーオブジェクトのどのデータをセッションに保存すべきかを決定します。serializeUserメソッドの結果は、セッションに
req.session.passport.user = {}
. 例えば、次のようになります(キーとしてユーザーIDを提供しているため)。
req.session.passport.user = {id: 'xyz'}
- を呼び出しています。
passport.deserializeUser
の直後で、ワークフローのどこに位置するのでしょうか?
の第一引数は
deserializeUser
に渡されたユーザーオブジェクトのキーに対応します。
done
関数(1.を参照)を使用します。つまり、あなたのオブジェクト全体は、そのキーの助けを借りて取得されるのです。ここでいうキーとは、ユーザーIDのことです(キーは、ユーザーオブジェクトの任意のキー、つまり、名前、メールなどでもかまいません)。
では
deserializeUser
このキーは、メモリ上の配列やデータベース、その他のデータリソースとマッチングされます。
取り出されたオブジェクトは、リクエストオブジェクトに
req.user
ビジュアルフロー
passport.serializeUser(function(user, done) {
done(null, user.id);
}); │
│
│
└─────────────────┬──→ saved to session
│ req.session.passport.user = {id: '..'}
│
↓
passport.deserializeUser(function(id, done) {
┌───────────────┘
│
↓
User.findById(id, function(err, user) {
done(err, user);
}); └──────────────→ user object attaches to the request as req.user
});
関連
-
[解決済み] リソースの読み込みに失敗しました: net::ERR_CONNECTION_REFUSED : Nodejs
-
[解決済み】AWS STS AssumeRoleへのアクセスを可能にする方法
-
webpack ENOENTソリューションの起動
-
[解決済み] Expectアサーションの型エラー -> expect(...).toExistは関数ではない
-
[解決済み] AWS lambda function error - Unable to import module 'index': エラー
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] ランタイム 'node' が PATH で見つからない - Visual Studio Code と Node.js
-
[解決済み] エラーです。Expressでビューの検索に失敗しました
-
[解決済み] Mongoose Schema がモデルとして登録されていません。
-
[解決済み] JSONをC#のダイナミックオブジェクトにデシリアライズする?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み] bodyParser は非推奨です express 4
-
[解決済み] Node.jsのホスト名/IPが証明書のaltnamesと一致しない
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] ブラウザで動作しているURLで「connect ETIMEDOUT」エラーが発生する原因は何ですか?
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] ReferenceError: describe は定義されていません NodeJs
-
[解決済み] ランタイム 'node' が PATH で見つからない - Visual Studio Code と Node.js
-
[解決済み] node.jsのセットアップウィザードが途中で終了してしまう
-
[解決済み] npm not able to find a fileに関連するエラーは何が原因でしょうか?node_modules サブフォルダ内にコンテンツがありません。なぜでしょうか?