Angular-UI和PassportJS身份验证

时间:2015-06-03 20:19:04

标签: angularjs node.js angular-ui-router passport.js passport-local

所以我试图让local-auth使用护照和angular-ui工作,但我想我已经迷惑了自己。我相信本地注册和本地登录工作,因为重定向正在按预期工作。

我有一个小的Auth服务,我想注入并用于存储用户信息。它看起来像这样:

myApp.factory('Auth', function() {
  var user;

  return {
    setUser: function(aUser) {
      user = aUser;
    },
    isLoggedIn: function() {
      return (user) ? user : false;
    }
  }
});

我的路线看起来像这样:

    app.post('/login', function(req, res, next) {
      passport.authenticate('local-login', function(err, user, info) {
        if (err) {
          console.log(err);
          return next(err);
        }
        if (!user) {
          console.log(user);
          var param = 'There was an error with your login';
          return res.redirect('/#/login?valid=' + param);
        }
        req.logIn(user, function(err) {
          if (err) {
            console.log(err);
            return next(err);
          }
          //console.log(req);
          console.log(user);
          return res.redirect('/#/news');
        });
      })(req, res, next);
    });

我的州看起来像这样:

myApp.config(function($stateProvider, $urlRouterProvider) {

  $urlRouterProvider.otherwise("/news");

  $stateProvider
    .state('news', {
      url: "/news",
      templateUrl: "templates/news.html",
      params: {
        message: null
      }

    })
    .state('people', {
      url: "/people",
      templateUrl: "templates/people.html",
      resolve: {
        authenticate: authenticate
      },
    })
    .state('login', {
      url: "/login",
      templateUrl: "templates/login.html"
    })
    .state('signup', {
      url: "/signup",
      templateUrl: "templates/signup.html"
    })
    .state('preLogin', {
      url: "/preLogin",
      templateUrl: "templates/preLogin.html"
    });

  function authenticate($q, Auth, $state, $timeout) {
    if (Auth.isLoggedIn()) {
      return $q.when()
    } else {
      $timeout(function() {
        $state.go('login')
      })
      return $q.reject()
    }
  }
});

我不知道如何或何时将用户信息存储在我的Auth服务中。我假设我需要在loginCtrl中执行此操作,但我不知道除了URL重定向之外如何成功登录。

感谢任何帮助。

0 个答案:

没有答案