繁体   English   中英

在Node.js中成功注册后直接进行身份验证(登录)

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

注册后如何直接验证用户身份。 下面是serializeUser和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) {

成功注册后,可以使用req.login()

从官方Passport文档:

注意: passport.authenticate()中间件会自动调用req.login() 此功能主要在用户注册时使用,在此期间可以调用req.login()来自动登录新注册的用户。

示例注册代码可能如下所示:

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('/')
            }
        })
    })
})

在官方护照文件中阅读有关req.login()的信息

我希望这能够帮到你。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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