在passport.serializeUser()
不使用任何数据库并将信息存储在简单passport.deserializeUser()
时,需要对local-strategy
和json file
进行一些说明。
护照如何确定身份及其在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);
}
);
答案 0 :(得分:0)
Passport在会话中维护身份验证状态,因此您需要定义2个函数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文件。