成功登录后如何访问angularjs应用程序中的userinfo

时间:2014-02-08 11:28:36

标签: angularjs

我在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.

1 个答案:

答案 0 :(得分:2)

要在角度应用中共享数据,您可以:

  • 将数据存储在服务中,然后可以在需要访问该数据时将其注入控制器。服务是单身人士:每个服务只有一个实例,这就是为什么数据在控制器之间是持久的。
  • 将数据存储在$rootScope中。看起来您已经在根范围上设置了用户对象,因此只要您已将$rootScope.currentUser注入控制器,就可以$rootScope访问它。请注意,丢弃根范围通常不是一个好主意,但在这种情况下,我认为将用户对象存储在那里是明智的,因为您可能需要从很多视图中访问它。

我通常将用户对象存储在$rootScope中(以便可以从视图访问)在专用服务中(以便可以从控制器等访问它)。