如何将用户信息从req.user传递到视图Nodejs Passport display username,这是一个很好的答案。我在网上看到的所有答案,包括这个答案,还看着mean.io使用玉渲染引擎。在我的情况下,我正在使用res.sendfile(.... static.html)发送文件,并使用angular进行路由。
在这种情况下,将用户信息传递给视图的正确方法是什么?
答案 0 :(得分:1)
如果您想继续发送静态文件而不使用res.render()
,则必须在客户端请求用户信息,而不是将其传递给服务器。
有几种方法可以使用Angular请求用户详细信息。最简单的可能是需要信息的控制器:
// UserController.js
app.controller('UserController', function (UserService) {
UserService.resolveUser().success(function (user) {
$scope.user = user;
});
});
// UserService.js
app.factory('UserService', function ($http) {
return {
resolveUser: function() {
return $http.get('/user');
},
}
});
您还可以使用$routeProvider
上的resolve
方法延迟加载路线,直到请求并提供用户信息为止。
...或者,如果您需要所有路线上的用户信息,您可以手动引导您的应用。
如果您需要使用Angular或Node.js的其他信息,请告诉我,我在此处未提及。
修改强>
关于您的评论,您可以使用$ http来请求您的用户信息,然后再引导您的应用:
angular.module('app', []);
// We only need invoke in order to use the $http service
// before we are bootstrapped.
angular.bootstrap().invoke(function ($http) {
$http.get('user.json').success(function (data) {
angular.element(document).ready(function () {
angular.module('app').constant('USER', data);
angular.bootstrap(document, ['app']);
});
});
});
angular.module('app').run(function (USER) {
console.log(USER);
});
您可以找到this Plunker的实时示例。