私は2つの部分のログインシステムを構築しています。ユーザーがメインアカウントAccount
にログインする場合、このアカウントは多くのチームTeam
のモデルにアクセスでき、アカウントは1人のユーザーがチームUser
の1人のユーザーを持つことができます。問題は、私がAccount
ログイン戦略をパスポートで定義できることですが、私はAccount
モデルを使用してシリアル化と逆シリアル化しかできませんが、のに関連するAccount
の特定のデータでリダイレクトまたはログインしたい場合、パスポートを使用してログに記録します。私はいくつかのアイデアや解決策が必要です。おそらくそこにパスポート戦略があります。 PS:これは怠惰なログインシステムのようなものだと思いますが、メインアカウント(電子メール)はそれぞれ複数のチームやチャットグループに対応しています。passport.js複数のde/serializeメソッド
0
A
答えて
1
私があなたの必要性を正しく理解していれば、複数の(デ)シリアライザを登録するか、より多くのロジックをシリアライズ実装に追加する2つのオプションがあると思います。
実際には文書化されていませんが、multiple serializeとdeserialize関数を登録できます。最初の関数が成功しない場合は、done('pass');
を呼び出して実行を次の(de)シリアライザに続ける必要があります。 (コード例はちょうど私の頭の上からであることに注意してください):
passport.deserializeUser((obj, done) => {
Account.deserialize(obj)
.then((account) => done(null, account))
.catch((err) => done('pass'));
});
passport.deserializeUser((obj, done) => {
User.deserialize(obj).then((user) => done(null, user))
});
あなたはあなたの好みのORM/ODMの明らかに組み込み(デ)シリアライズを使用して、これらに限定されません。したがって、シリアライゼーション機能で必要なカスタムロジックを実行できます。たとえば、モデルインスタンスIDと型を直列化でオブジェクトに入れ、デシリアライズ時に使用します。
passport.serializeUser((obj, done) => {
if (obj instanceof Account) {
done(null, { id: obj.id, type: 'Account' });
} else {
done(null, { id: obj.id, type: 'User' });
}
});
passport.deserializeUser((obj, done) => {
if (obj.type === 'Account') {
Account.get(obj.id).then((account) => done(null, account));
} else {
User.get(obj.id).then((user) => done(null, user));
}
});
+0
あなたは私に啓発してくれてありがとう、私は今後の日にこれを試してみて、ありがとう、私はこれが潜在的に答えだと思います。 –
関連する問題
- 1. 複数のモデルをpassport.js
- 2. passport.jsのdeserializeUserメソッドのメリット
- 3. wcfメソッドのjsonをdeserializeメソッドのパラメータがnullです
- 4. Passport.JSで未解決の関数またはメソッド
- 5. Strange Json deserialize
- 6. Catel json deserialize
- 7. Typescript - JSON deserialize
- 8. ビルダーパターンjson deserialize
- 9. groovy soapUI deserialize
- 10. Passport.jsステートレス
- 11. 複数のGETメソッド?
- 12. deserialize "/ Date(1309498021672)/" in DateTime
- 13. ジャクソンDeserialize抽象クラス
- 14. GSON deserialize/serialize hierarchyクラス
- 15. NUnit:Assert.Aultume.Thatを含むメソッドの複数のメソッド
- 16. req.userはExpress.js Passport.js
- 17. セッションはpassport.js
- 18. Node.js/Passport.jsワークフロー
- 19. 複数のメソッドのBDDネーミング
- 20. メソッド内の複数のLinq.Tables
- 21. 複数のメソッドのMethodSecurityInterceptor
- 22. Androidスタジオ複数のonCreateメソッド
- 23. 複数のメソッドNSNotificationCenter iPhone
- 24. 複数の静的メソッド
- 25. 複数のGetメソッドOData
- 26. ToListメソッド()複数のオブジェクト
- 27. Deserialize Facebook Workplace SCIM Rest APIレスポンス
- 28. c#Deserialize入れ子json
- 29. Json Deserializeオブジェクトがクラッシュする
- 30. deserialize graph.facebook.com JSONフィードをC#
「パスポート - ローカル - モンゴース」などを使用していますか? – vesse
私はローカルstatregy(2登録済み)を使用していますが、異なるde/serializeモデルでそれらを使用したいです –