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(「成功登錄」) –