【发布时间】:2017-07-30 22:28:57
【问题描述】:
我有一个基本的登录控制器,它带有一个更新用户 $scope 的表单。当他们单击按钮时,会触发 login() 函数。
.controller('loginCtrl', ['$scope','$http',function($scope,$http) {
$scope.user = {
'username' : "",
'password' : ""
};
$scope.login = function(){
$http.post('/login', $scope.user).then(function (response){
console.log(response.data);
});
}
}]);
这是我的 /login 路由
app.post('/login', function(req,res,next){
passport.authenticate('local-login', function(err, user, info){
if (err){
console.log(err);
return next(err);
} else if (!user){
return res.send(info);
} else {
req.logIn(user, function(err){
if (err){
return next(err);
} else {
return res.redirect('/view1');
}
});
}
})(req,res,next);
});
这是我的护照local-login。
passport.use('local-login', new LocalStrategy({
passReqToCallback: true // Allows us to pass back the entire request to the callback function
},
function (req, email, password, done){
// Checks database via mongoose
,function (err,user){
if (err){
return done(err);
} else {
if (!user){
return done(null, false, { message : 'No user found.'});
} else if (!user.validPassword(password)) {
return done(null, false, { message : 'Incorrect password'});
} else {
return done(null, user);
}
}
});
}));
这里的主要问题是当res.redirect('/view1') 在我的路由逻辑中被触发时,控制器接收到的html 页面是response.data,而不是实际被重定向。 ($http.post().then(function (response){});)
如果这是不正确的,我应该如何在用户成功登录后实际处理重定向到/view1?
【问题讨论】:
标签: javascript angularjs node.js express passport.js