が呼び出されました。シリアライズとデシリアライズが呼び出されたときに、私はalert(user.id)
を入れましたが、何も起こっていません。 シリアライズとデシリアライズ時にパスポートjs
function(req, email, password, done)
を呼び出す方法process.nextTick()
を果たしuser
オブジェクトがpassport.serializeUser(function(user, done){...
に受けたから
- : は、私はいくつかのクエリを持っています(名前、電子メール、パスワード、住所、モバイル)。ここで
コードです: - あなたがユーザーを認証する際
//config/passport.js
var LocalStrategy = require('passport-local').Strategy;
var User = require('../app/models/user');
module.exports = function(passport) {
passport.serializeUser(function(user, done) {
alert(user.id);//// Here is my testing alert
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
passport.use('local-signup', new LocalStrategy({
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true
},
function(req, email, password, done) {
process.nextTick(function() {
User.findOne({ 'local.email' : email }, function(err, user) {
if (err)
return done(err);
if (user) {
return done(null, false, req.flash('signupMessage', 'That email is already taken.'));
} else {
var newUser = new User();
newUser.local.email = email;
newUser.local.password = newUser.generateHash(password);
newUser.save(function(err) {
if (err)
throw err;
return done(null, newUser);
});
}
});
});
}));
}
「passport.initialize()とpassport.session()」という質問があります。シリアライズされたユーザーが見つかった場合、serializeUserが** user idをreq.userにロードさせるものですサーバー内で(wheユーザーがmongodbに存在する場合は、mongodbを使用します)。 ** "ユーザーIDはどこから来たのですか?"ユーザーがmongodbに存在するかどうか "と言うと、Userモデルを自動的に調べますか? –
コードリファクタを' if(req.url.match( '/ xxx '))passport.session(); next(); ' – NERDYLIZARD