2016-03-01 2 views
0

У меня есть многостадийный Angular.js формы для Signup, который сохраняет все входные пользователь в:

$scope.user = {}; 

Затем я использую ng-submit так:

<form class="css-form" name="myForm" ng-submit="signup()" novalidate> 

функция Регистрация затем делает запрос POST к моему Node.js API на /signup маршрут как так:

$scope.signup = function(){ 

    return $http.post('/signup',$scope.user). 
    success(function(data, status, headers, config) { 
     // this callback will be called asynchronously 
     // when the response is available 
     console.log("this is the response data " + data); 
    }). 
    error(function(data, status, headers, config) { 
     // called asynchronously if an error occurs 
     // or server returns response with an error status. 
     console.log("this is the error " + data); 
    }); 
}; 

Примечание: Вышеприведенная информация успешно регистрирует нового пользователя и сохраняет данные в MongoDB.

выпуск:

Я использую Passport.Js сторону сервера для аутентификации пользователей & регистров. Я использую local-signup.

Проблема в том, что если пользователь успешно зарегистрирован, он должен быть автоматически перенаправлен на определенную страницу и тот же, если они не увенчались успехом. Ниже мой сервер код сторона:

app.post('/signup', passport.authenticate('local-signup', { 
     successRedirect : '/profile', // redirect to the secure profile section 
     failureRedirect : '/', // redirect back to the signup page if there is an error 
     failureFlash : true // allow flash messages 
    })); 

Вопрос заключается в том, что на ОБОИХ успешно регистрации & неудачно, он не перенаправляет пользователя на основе маршрутов, предоставленных. Он отправляет обратно фактический код перенаправленных страниц в данные ответа. Поэтому при успешной регистрации он должен отправить пользователя в профиль & на главную страницу, если не удалось

Я, похоже, не могу решить эту проблему, может быть, вся моя техника неправильна. Любая помощь будет оценена по достоинству.

ответ

0

Не shure, но это может помочь.

В Угловое:

$scope.signup = function(){ 
    return $http.post('/signup',$scope.user) 
    .then(function(data) { 
     location.replace(data.redirectUrl); // use appropriate function to update route 
    }); 
}; 

В nodejs:

app.post('/signup', 
     passport.authenticate('local-signup', { failWithError: true }), 
     function(req, res, next) { 
     // success 
     return res.json({ redirectUrl: '/profile' }); 
     }, 
     function(err, req, res, next) { 
     // error 
     return res.json({ redirectUrl: '/' }); 
     } 
    ); 
+0

Спасибо большое за ответ. Это сработало отлично. Знаете ли вы о каких-либо рисках, связанных с этим подходом, или это безопасно? – Skywalker

+0

Существует никаких рисков: это стандартный способ аутентификации через запрос xhr –

+0

Спасибо за помощь. Застрял в этом целыми днями! – Skywalker

Смежные вопросы