如何使用MEAN堆栈在注册时显示失败消息

我正在开发一个使用护照authentication进行login和注册过程的SPA。 事情是,一切工作正常,我甚至可以显示成功通知,但我不能find一种方式来显示错误通知,以防用户做出不好的操作。

这是我在passport-init注册的代码:

passport.use('signup', new LocalStrategy({ passReqToCallback : true }, function(req, username, password, done){ var email = req.body.email; User.findOne({$or: [ {username: username}, {email: email} ] }, function(err, user){ if(err){ return done(err, false); } if(user) { console.log('username or email already taken '+req.body.username); return done(null, false, {message: 'Username or email already taken.'}); } user = new User(); if(req.body.password===req.body.username || req.body.password===req.body.fullname || req.body.password===req.body.email){ console.log('The password can not be equals to your fullname'+ ', username or email. Try another password.'); return done(null, false, {message: 'The password can not be equals to your fullname'+ ', username or email. Try another password.'}); } 

然后,如果发生这种情况,该方法不会返回用户数据的错误。

这里是将结果传递给angular的路由代码:

  router.get('/failure', function(req, res){ res.send({state: 'failure', user: null, message: "Invalid username or password"}); }); router.post('/signup', passport.authenticate('signup',{ successRedirect: '/auth/success', failureRedirect: '/auth/failure', failureFlash: true })); 

最后,我得到了这个angular度来打电话,得到一个回应:

 $scope.register = function(){ $http.post('/auth/signup', $scope.user).then( function(data){ $rootScope.authenticated = true; $rootScope.current_user = data.user.username; $rootScope.signUp = true; }, function(data, status){ console.log(status); } ); }; 

就是这个。 当然,angular码在控制器内部。 我刚开始学习构buildMEAN堆栈应用程序,因此,任何帮助将不胜感激。

如果有一个自定义错误/自定义逻辑,你应该发送一个错误回到客户端:

 if(user) return done({error:'userAlreadyTaken'},false); 

对于代码中的其他条件也是如此。