1

我正在尝试使用 Google 策略使用 Passport 身份验证。我可以通过 google 对应用程序进行身份验证,但是在它返回到我的快速服务器后,我想将它与配置文件数据一起传递到客户端页面。

这意味着本质上我不想使用模板引擎。

因此,一旦我的谷歌回调在这里成功重定向,我需要使用数据重定向到我的客户端

router.route('/google/callback')
.get(passport.authenticate('google', {
    successRedirect: '/users/',
    failure: '/error/'
}));

到目前为止,我找不到任何可以在没有模板引擎的情况下执行此操作的存储库。任何人都可以帮忙吗?

4

4 回答 4

0

您可以选择要在客户端页面中显示的数据,例如令牌过期时间、刷新令牌等,并为您的客户端应用程序创建一个链接 ( http://<application_root>/route1/:exptime/:reftoken)。

在客户端应用程序配置中设置路由处理程序。

例如:在 AngularJS 应用程序中-

应用程序配置:

$routeProvider
        .when('/route1/:exptime/:reftoken', {
            templateUrl: 'route1.html',
            controller: 'RoutingController'
        })

路由控制器:

module.controller("RoutingController", function ($scope, $routeParams) {
    // Using $routeParams
    $scope.param1 = $routeParams.exptime;
    $scope.param2 = $routeParams.reftoken;
});

有了这个,您可以在视图上获得所需的输出,还可以避免在 nodejs 应用程序中使用模板引擎。

于 2018-06-25T08:01:14.463 回答
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>`); 
});
于 2018-06-20T12:50:42.687 回答
0

如果您不想构建到客户端页面的重定向,可以执行以下操作:

与其设置successRedirect后端 URL,不如将其设置为 Angular 路由,然后通过将请求传播到后端XHRHttpRequest,然后将数据返回给客户端。

于 2018-06-21T08:51:04.957 回答
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}
    ));
});
于 2018-06-18T20:09:26.140 回答