0
我正在为用户登录创建Node api,并且正在使用JSON Web Token进行身份验证。用户无法使用JWT和Node API登录Angular js
apiRoutes.put('/login', function(req, res){
User.findOne({name:req.body.name}, function(err, user){
if(err){throw err;}
else{
if(!user){
res.send({success:false, msg:'Auth Failed'});
}else{
user.comparePassword(req.body.password, function(err, isMatch){
if(isMatch && !err){
var token=jwt.encode(user, config.secret);
res.json({success:true, token:'JWT' +token});
}else{
res.send({success:false, msg:'Auth Fails:wrong password'});
}
});
}
}
});
});
登录控制器
app.controller('loginCtrl', function($http, $scope, $location, $cookieStore){
$scope.login=function(){
console.log($scope.loginUser);
$http.put('/api/login', $scope.loginUser).then(function(response){
console.log(response.data.token);
$cookieStore.put('token',response.data.token);
$scope.currentUser=$scope.loginUser.name;
alert("Successfully Loggedin");
}, function(err){
alert('Bad Login Credentials');
});
};
});
登录表单HTML
<div class="post" ng-controller="loginCtrl">
<form method="post">
<div class="form-group" >
<label>Name</label>
<input type="text" class="form-control" name="name" ng-model="loginUser.name" />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" class="form-control" name="password" ng-model="loginUser.password"/>
</div>
<div class="form-group">
<button class="btn btn-success" ng-click="login()" >Login</button>
</div>
</form>
</div>
的问题是,当我点击与用户凭据登录按钮,它始终是返回alert("successfully logged in");
,尽管用户凭据是对还是错。我认为在Angular Login控制器中缺少一些东西,但我无法找出错误。
有人可以帮我找出问题吗?
谢谢。
与快递4使用res.status(400).send({成功:假,味精:'身份验证失败'}); – Gatsbill
不..不工作...面临同样的问题。 –
如果用户'name'和'password'都是错误的,那么它显示正确的提醒信息。但是当'用户'匹配和'密码'不匹配时,它总是返回'alert(“成功登录”) –