我正在尝试使用Google策略进行Passport身份验证。我可以通过谷歌验证应用程序,但在它返回到我的快速服务器后,我想将它与配置文件数据一起传递到客户端页面。
这意味着我基本上不想使用模板引擎。
因此,一旦我的谷歌回调点击成功转发,我需要将数据重定向到我的客户端
router.route('/google/callback')
.get(passport.authenticate('google', {
successRedirect: '/users/',
failure: '/error/'
}));
到目前为止,我找不到任何没有模板引擎的回购。有人可以帮忙吗?
答案 0 :(得分:0)
添加重定向路由
app.get('/google/callback/users', function(req, res) {
return res.json(JSON.stringify(
// assume you add the user object after google auth callback
{user: req.user}
));
});
答案 1 :(得分:0)
例如,如果您在索引路由中,则可以从请求对象访问经过身份验证的用户:
router.get('/users', (req, res) => {
res.send(`<html>
<body>
User data: ${JSON.stringify(req.user)}
</body>
</html>`);
});
或者,如果您位于用户路线之内:
router.get('/', (req, res) => {
res.send(`<html>
<body>
User data: ${JSON.stringify(req.user)}
</body>
</html>`);
});
答案 2 :(得分:0)
如果您不想建立到客户端页面的重定向,则可以执行以下操作:
不是将successRedirect
设置为后端URL,而是将其设置为Angular路由,然后通过XHRHttpRequest
将请求传播到后端,然后将数据返回给客户端。
答案 3 :(得分:0)
您可以选择要在客户端页面上显示的数据,例如令牌到期时间,刷新令牌等,并为客户端应用程序创建链接(http://<application_root>/route1/:exptime/:reftoken
)。
在客户端应用程序配置中设置路由处理程序。
例如:在AngularJS应用程序中-
应用程序配置:
$routeProvider
.when('/route1/:exptime/:reftoken', {
templateUrl: 'route1.html',
controller: 'RoutingController'
})
RoutingController:
module.controller("RoutingController", function ($scope, $routeParams) {
// Using $routeParams
$scope.param1 = $routeParams.exptime;
$scope.param2 = $routeParams.reftoken;
});
这样,您可以在视图上获得所需的输出,还可以避免在nodejs应用程序中使用模板引擎。