id
フィールドは、model
、doc
、またはrecord
のいずれかにしてください。では、どうしてdone(null, user.id)
が働くのですか?私は_id
ですが、id
はありません。パスポートオブジェクトがデータベース内のユーザの_id
とセッションに追加されているようですが、自動的に行われるのはどのようにして_id
になりましたか?ドキュメントには、それはこの例ではpassport.jsのしくみに関する質問。特にuser.idについて
を言う、唯一のユーザーIDは、どのようにそれがIDを取得したセッション
にシリアライズされ、どのようにユーザーを取得したのですか?私のコードで
同様の例:
passport.serializeUser(function(user, done){
done(null, user.id)
});
passport.deserializeUser(function(id, done){
User.findById(id, function(err, user){
done(err, user);
})
});
それがユーザーIDを取得するのにかかるの手順は何ですか?
私も
passport.use("login", new LocalStrategy(function(username, password, done){
User.findOne({username : username}, function(err, user){
if(err){return done(err)}
if(!user){
return done(null, false, {message : "no User has that name"})
}
.......
を持っているが、私は何とかパスポートの方法にDB
にユーザーを接続passport.use()
を使用しているという事実を行います。
編集私はuser.nameを使用する必要がありますが、名前フィールドにパスポート経由でdoc(ユーザー)を転送したいとしますか?
はまた、私は、どのようにdone(null, user.id)
作品を来た作品
だから 'done(null、user.id)'は 'passport.serializeUser()'のコールバックの中にあります。どの時点で、あるいは 'user.id'が私たちが認証しているユーザのIDを取得したのか疑問に思っています。 –
ああ、これは 'passport.use'メソッドと戦略が活躍する場所だと思います。 'passport.use'の中の' done'メソッドがユーザ文書とともに返されます。これが 'serializeUser()'に適切な 'user.id'を得る方法です。私は混乱していると私はどのようにユーザーのドキュメントがpassport.use()からソースコード内のpasspor.serializeUserに転送されるのを見たいと思います。あなたがチャンスを取ったときに、私にその部分を見せてくれるかもしれません。 –
'passport.use()'とシリアライズメソッドがソースコード内でどのように接続されているのかを見てみたいと思います。ありがとう –