当前位置 : 主页 > 网页制作 > Nodejs >

node.js – Sails.js:如何在用户注册后使用sails-generate-auth返回访问令牌?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我在我的sails.js应用程序中使用 sails-generate-auth.我按照 this教程将其与我的应用程序集成.当我调用localhost:1337 / auth / local / register时,它会路由到我在AuthController中的回调操作.我的回调动
我在我的sails.js应用程序中使用 sails-generate-auth.我按照 this教程将其与我的应用程序集成.当我调用localhost:1337 / auth / local / register时,它会路由到我在AuthController中的回调操作.我的回调动作如下

callback: function (req, res) {
        function tryAgain(err) {
                //some validation
                }
        }

passport.callback(req, res, function (err, user, challenges, statuses) {
            if (err || !user) {
                return tryAgain(challenges);
            }

            req.login(user, function (err) {
                if (err) {
                    return tryAgain(err);
                }

                //Return the access token created by passport instead of success.
                res.send("Success");
            });
        });

我想替换res.send(“成功”);使用护照创建的访问令牌.但此时User.passport似乎为null.如何在此时获取用户的访问令牌?

“您获得的用户”仅包含“用户集合”中包含用户名电子邮件和ID的数据. “Passport”集合是一个单独的集合,其中包含散列密码,ID,userID(等于“User”集合中的ID)和令牌.您需要在“护照”集合中搜索相关用户.这是algoritem:

passport.callback(req, res, function (err, user, challenges, statuses) {
  if (err || !user) {
    console.log(err);
    return tryAgain(challenges);
  }

  req.login(user, function (err) {
    if (err) {
      console.log(err);
      return tryAgain(err);
    }

    // Mark the session as authenticated to work with default Sails sessionAuth.js policy
    req.session.authenticated = true

    console.log(user);
    var userID = user.id;
    Passport.find({user: userID}, function(err, items){
        if(err) return err;

        console.log(items[0].accessToken);
        // Make sure you dont give them any sensetive data
        res.json({userData: user, token: items[0].accessToken});
    });
    // Upon successful login, send the user to the homepage were req.user
    //res.redirect('/');
  });
});
网友评论