我在angularjs中开发测试应用程序并从登录页面验证我的用户, 快递代码:
exports.login = function (req, res, next) {
passport.authenticate('local', function(err, user, info) {
var error = err || info;
if (error) return res.json(401, error);
req.logIn(user, function(err) {
if (err) return res.send(err);
res.json(req);
});
})(req, res, next);
};
服务:(身份验证和会话) 验证服务代码: login:function(user,callback){ var cb = callback || angular.noop;
return Session.Sessionlogin().save({
email: user.email,
password: user.password
}, function(user) {
$rootScope.currentUser = user;
return cb();
}, function(err) {
return cb(err);
}).$promise;
},
会话服务代码: Sessionlogin:function(){ return $ resource('/ api / session /');
Controller Code:
$scope.login = function(form) {
$scope.submitted = true;
if(form.$valid) {
Auth.login({
email: $scope.user.email,
password: $scope.user.password
})
.then( function(err) {
// todo : redirect to admin dashboard
$location.path('admin/dashboard');
})
.catch( function(err) {
err = err.data;
$scope.errors.other = err.message;
});
}
};
现在每件事情都很好,我的问题是:
成功登录后我将用户重定向到仪表板页面。现在我如何访问仪表板页面中的userinfo。是否有任何类型的session object in angularjs where i can store the response received from the express code and send it to the dashboard page.
答案 0 :(得分:2)
要在角度应用中共享数据,您可以:
$rootScope
中。看起来您已经在根范围上设置了用户对象,因此只要您已将$rootScope.currentUser
注入控制器,就可以$rootScope
访问它。请注意,丢弃根范围通常不是一个好主意,但在这种情况下,我认为将用户对象存储在那里是明智的,因为您可能需要从很多视图中访问它。我通常将用户对象存储在$rootScope
中(以便可以从视图访问)和在专用服务中(以便可以从控制器等访问它)。