我正在使用 node.sdk,stormpath,express.js 和 passport.js 为我的新网站创建一个用户帐户系统。所以我设置了一个带有自定义数据槽的帐户。我想知道如何在他们注销时将新数据发布到此自定义数据槽并在他们登录时检索它。我是使用节点的新手,我不知道将代码放在哪里或如何访问他们登录时的“用户”帐户信息。据我所知,passport.js 正在处理身份验证,所以我可能看不到用户通过电子邮件在stormpath api上搜索他们的用户帐户网址......也许我'我在这里遗漏了什么??
router.post('/register', function(req, res) {
var username = req.body.username; var password = req.body.password;
// Grab user fields. if (!username || !password) { return res.render('register', { title: 'Register', error: 'Email and password required.' }); }
// Initialize our Stormpath client. var apiKey = new stormpath.ApiKey( process.env['STORMPATH_API_KEY_ID'], process.env['STORMPATH_API_KEY_SECRET'] ); var spClient = new stormpath.Client({ apiKey: apiKey });
var app = spClient.getApplication(process.env['STORMPATH_APP_HREF'], function(err, app) { if (err) throw err;
account = {
givenName: 'John',
surname: 'Smith',
username: username,
email: username,
password: password,
customData:{
favList:'',
},
};
app.createAccount(account, function (err, createdAccount) {
if (err) {
return res.render('register', {'title': 'Register', error: err.userMessage });
} else {
passport.authenticate('stormpath')(req, res, function () {
return res.redirect('/home');
});
}
});
});
});
// 渲染登录页面。router.get('/login', function(req, res) { res.render('login', { title: 'Login', error: req.flash('error')[0] }); });
// 验证用户。router.post('/login', passport.authenticate('stormpath', { successRedirect: '/home', failureRedirect: '/login', failureFlash: '哎呀我猜你需要一个帐户才能进入这里..Soz' , } ) );
// 渲染仪表板页面。router.get('/home', function (req, res) { if (!req.user || req.user.status !== 'ENABLED') { return res.redirect('/login'); }
res.render('home', { title: 'Home', user: req.user, } ); });