简体   繁体   中英

Directly authenticate(login) after successful signup in Node.js

How can i directly authenticate the user after signup. Below are the the deatail of serializeUser and deserializeUser.

passport.serializeUser(function(user, done) {
  done(null, {tutorId: user.tutorId, userType: user.userType});
});

passport.deserializeUser(function(userData, done) {
  Tutor.getTutorById(userData.tutorId, (err, user) => {
    if (err) {
      try {
        logger.silly(`message: POST inside passport.deserializeUser; file: index.js; error: ${err}; user: ${JSON.stringify(user)}`);
        logger.error(`message: POST inside passport.deserializeUser; file: index.js; error: ${err}; user: ${JSON.stringify(user)}`);
      } catch (e) {

You can use req.login() after successful registration.

From official Passport documentation:

Note: passport.authenticate() middleware invokes req.login() automatically. This function is primarily used when users sign up, during which req.login() can be invoked to automatically log in the newly registered user.

A sample registration code might look like this:

router.post("/register",(req,res) => {
    var user = new User();
    user.name = req.body.name;
    user.email = req.body.email;
    //define other things here
    //create hash and salt here
    user.save().then(user => {
        //on successfult registration
        //login user here, using req.login
        req.login(user ,err => {
            if(!err){
                //redirect to logged-in page
                //or user page
                res.redirect('/')
            }
        })
    })
})

Read about req.login() in official passport documentsation

I hope this helps you out.

您可以在成功注册后立即创建令牌并将其发送回注册响应中

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM