Sails.js:如何使用sails-generate-auth注册用户后返回访问令牌?
我在我的sails.js应用程序中使用sails -generate-auth 。 我按照这个教程来整合这个与我的应用程序。 当我调用localhost:1337/auth/local/register
它将路由到我在AuthController
callback
操作。 我的callback行为如下
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"); }); });
我想replaceres.send("Success");
与护照创buildaccess token
。 但是User.passport
在这一点上似乎是空的。 我现在如何获取用户的access token
?
您只获取用户包含“用户集合”中包含用户名电子邮件和ID的数据。 “Passport”集合是一个单独的集合,包含散列的密码,ID,用户ID(等于“用户”集合中的ID)和一个标记。 您需要在relavent用户的“护照”collections中进行search。 这是algorithm:
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('/'); }); });
如果你想使用sails内置会话,你不需要发送任何令牌给客户端,所有的东西都存储在服务器端的会话中,并且通过sid
(session id)cookie sid
到用户,所以你可以redirect到任何页面。
只要你有你的sessionAuth
策略,它会在访问受保护的路由之前检查用户是否login。
如果你想使用像JSON Web Tokens(JWT)这样的东西,sails-generate-auth / sails-auth 不支持它