如果用户名正确,我想从login.html重定向到dashboard.html,如果不正确,则会显示警报框,我同时使用了express response.redirect('path')或response.sendFile('path'),但是没有人在这里工作。 我将angularJs用作前端,并在后端表示nodeJs的模块。
快递路线代码:
module.exports = function(app,db,path){
app.post('/student-login', function (request, response) {
var user = request.body;
if(user.username == "abhinav")
{
response.redirect('/views/dashboard.html');
response.end();
}
else{
response.send("Wrong username");
response.end();
}
});
}
AngularJs代码:
angular.module('loginService',[])
.service('loginService',function($http){
return {
sendStudent : function(data){
return $http.post('/student-login',data)
.then(function(response){
return response.data;
});
}
}
});
AngularJs控制器代码:
if ($scope.myForm.$valid)
loginService.sendStudent($scope.studentData)
.then(function(data){
if(data=="Wrong username")
alert(data);
});
答案 0 :(得分:0)
正如您在 Network 标签中所看到的,浏览器确实向/views/dashboard.html
路由发出了请求。这意味着重定向有效。无法获得预期行为的原因是,您需要导航到该页面(现在您只是在加载页面内容)。
我建议将重定向逻辑从Express转移到前端,并使用http状态代码表示登录错误。
快递代码:
module.exports = function(app,db,path){
app.post('/student-login', function (request, response) {
var user = request.body;
if (user.username == "abhinav") {
response.sendStatus(200);
} else {
response.sendStatus(401);
}
});
}
AngularJS控制器代码:
if ($scope.myForm.$valid) {
loginService.sendStudent($scope.studentData).then(() => {
// login successful, response status is 200
location.href = '/views/dashboard.html'
}).catch(response => {
if (response.status === 401) {
alert("Wrong username")
} else {
alert("Some other error")
}
})
}
我仅以location.href
为例,因为我对angularjs路由不熟悉。它将重新加载整个页面,如果要避免这种情况,请使用angularjs路由器提供的API。