为什么不res.redirect实际上redirect我?
我有一个基本的login控制器的表单,更新用户的$范围。 当他们点击一个button时,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
而不是实际被redirect。 ( $http.post().then(function (response){});
)
如果这是不正确的,我应该怎么处理用户成功login后redirect到/view1
?
当你从javascript调用后端的时候,你基本上会在场景后面进行ajax调用,而这些调用在redirect和其他HTTP头文件中不起作用。
为了将用户redirect到正确的页面,您必须检查来自后端的响应中的HTTP状态代码,并通过angular度将用户redirect到正确的站点。 这可能看起来像这样:
if(response.status == 302) { $window.location.href = '/view1'; }
或者不发送redirect,您可以从服务器发送状态更新,如:
res.json({ success: true, redirectTo: '/view1' });
并parsing它在客户端上:
if(response.data.success){ $window.location.href = response.data.redirectTo; }
- 删除NG重复量angular器中的logging
- nodejs代理本地api调用外部restapi服务(不express.js)
- Angular $ http GET不传递string到后端。 未定义?
- 如何使用Jasmine对$ scope.broadcast,$ scope。$进行unit testing
- 用Angularjs从Mongodb获取数据
- 在angular度全堆发生器上启用CORS?
- Protractor JS不能在IE11上运行多合并testing
- Nodejs&Express:如何通过Render将多个variables(Json Datatype)从服务器发送到客户端
- 用angularJS更新mongodb中的date,inputtypes=“date”