【发布时间】:2016-10-22 16:25:32
【问题描述】:
我正在尝试在Node.js 中编写一个使用passport-facebook 身份验证策略的Web 应用程序。默认情况下,示例中提供的机制通过将用户重定向到Facebook API 来工作,用户可以在其中输入用户名和密码以登录。一旦 Facebook 验证了用户,它会将令牌传递回我的应用程序中的回调 URL。
现在这些东西适用于我的应用程序。我可以毫无问题地使用 Facebook 登录。但我希望在尝试登录时向服务器传递一个额外的字段。
基本上我的计划是在我的主页上添加一个TextField 和一个Login Button。登录成功后,当回调函数执行时,我想从这个回调中获取TextField的值。有没有办法做到这一点?非常感谢任何帮助。
这是我的 HTML 页面的正文
<body>
<div class="container">
<div class="jumbotron text-center">
<p>Login or Register with:</p>
<a href="/auth/facebook" class="btn btn-primary"><span class="fa fa-facebook"></span> Facebook</a>
</div>
</div>
</body>
这是我的nod.js 代码:
app.get('/auth/facebook', passport.authenticate('facebook'));
app.get('/auth/facebook/callback', passport.authenticate('facebook', {
successRedirect : '/dashboard',
failureRedirect : '/'
}));
app.get('/dashboard', isLoggedIn, function(req, res){
res.render('dashboard.ejs', {
user : {
name : req.user.facebook.name,
profilePic : req.user.facebook.profilePic
}
});
});
基本上我只想在我的LogIn 按钮之前添加一个额外的TextField。从/dashboard 路由中,我想得到TextField 的值。所以我的/dashboard 代码看起来像这样:
app.get('/dashboard', isLoggedIn, function(req, res){
res.render('dashboard.ejs', {
user : {
role: VALUE_FROM_TEXT_FIELD,
name : req.user.facebook.name,
profilePic : req.user.facebook.profilePic
}
});
});
所以我有一个双重问题:
1. 如何从前端传递这个TextField 值。它应该在Form 内还是什么?
2、如何获取/dashboard路由内TextField的值?
【问题讨论】:
-
你能举一些你工作的例子吗?我怀疑你应该能够使用回调 url 来回传这个
标签: javascript node.js passport.js passport-facebook