需要一些关于passport.serializeUser()和passport.deserializeUser()的解释,当不使用任何local-strategy数据库并将信息存储在简单的json file中时。
passport如何确定id以及如何在deserializeUser()中检索
passport.use(
'local-signup',
new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
},
function(request, email, password, done) {
process.nextTick(
function() {
if(user.doesUserExist(email)) {
return done(
null,
false,
request.flash('signupMessage', 'That email is already taken.')
);
}
else {
var newUser = user.createNewUser(email, password);
return done(null, {email: newUser.username, password: newUser.password});
}
}
);
}
)
);
// Used to serialize the user for the session
passport.serializeUser(
function serializeUserCB(user, done) {
done(null, user);
}
);
// Used to deserialize the user
passport.deserializeUser(
function deserializeUserCB(id, done) {
done(null, id);
}
);发布于 2015-12-06 15:45:31
Passport在会话中维护身份验证状态,因此您需要定义两个函数passport.serializeUser和passport.deSerializeUser来序列化/反序列化会话中的用户实例。
每个后续请求将不包含凭据,而是标识会话的唯一cookie,以便支持登录会话。
为了序列化和反序列化,它使用来自
app.use(session({
secret: 'ThIsIsAsEcREtKEy',
resave: true,
saveUninitialized: true
}));只需使用serializeUser和deserializeUser作为
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (id, done) {
done(null, id);
});用于本地Json文件。
https://stackoverflow.com/questions/34061608
复制相似问题