Tôi đang sử dụng hộ chiếu để xác thực và xử lý phiên. Tất cả mọi thứ hoạt động tốt cho đến nay. Tôi đã triển khai biểu mẫu "Đăng nhập" để thêm người dùng mới vào ứng dụng. Sau khi người dùng được thêm, tôi muốn đăng nhập tự động.Passport + Node.js/Tự động đăng nhập sau khi thêm người dùng
Cách tốt nhất để đạt được điều này - tôi có nên chuyển hướng đến "/ đăng nhập" bằng thông tin đăng nhập của người dùng hoặc có cách nào khác/tốt hơn (gọi serializeUser) để làm điều đó không?
Cho đến nay tôi nghĩ rằng tôi đã không thực sự hiểu cách "thực hiện" chức năng (trong serializeUser và LocalStrategy) đang làm việc hoặc những gì nó đang làm ...
Đây là mã của tôi:
passport.serializeUser(function(user, done) {
done(null, user._id);
});
passport.deserializeUser(function(id, done) {
authProvider.findUserById('users', id, function (err, user) {
done(err, user);
});
});
passport.use(new LocalStrategy(function(email, password, done) {
authProvider.getUserByEmail('users', email, function(error, user){
if(error) { return done(error); }
if (!user) { return done(null, false, { message: 'Unknown user ' + email });}
if (user.password != password) { return done(null, false);}
return done(null, user);
});
}
));
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login'}),
function(req, res) { res.redirect('/');});
app.post('/sign', function(req, res){
authProvider.saveUser(...do stuff), function(error, user){
if(error){
res.redirect('/sign');
} else {
res.redirect('/');
}
});
});
Có ai biết cách thực hiện việc này không?
Tại sao tiếp cận chức năng deserialize DB? Không thể nó chỉ trả về được thực hiện (null, id); ? – Se7enDays