如何在 angular js 中使用基于令牌的节点 api
How to consume token based node api in to angular js
我在登录时使用 node.js 创建令牌:
apiRoutes.put('/login', function(req, res, next){
User.findOne({email:req.body.email}, function(err, user){
bcrypt.compare(req.body.password, user.password, function(err, result){
if(result){
var token=jwt.encode(user,config.secret);
return res.json({success: true, token:'JWT' +token});
}else{
return res.json("Incorrect Email and Password")
}
})
})
});
现在我正在尝试用 /dashboard
路由显示用户仪表板页面,我正在做如下的事情:
apiRoutes.get('/dashboard',function(req, res) {
var token=getToken(req.headers);
if(token){
var decode=jwt.decode(token, config.secret);
console.log(decode);
User.findOne({name:decode.name}, function(err, user){
if(err){res.json(err)}
if(!user){
return res.status(403).send({success:false, msg:'Authentication Failed'})
}else{
res.json({success:true, msg:'Welcome in the Area ' +user.name+'!' })
}
})
}else{
return res.status(403).send({success:false, msg:'No Token Found'})
}
});
getToken = function (head) {
if (head && head.authorization) {
var parted = head.authorization.split(' ');
if (parted.length == 2) {
return parted[1];
} else {
return null;
}
} else {
return null;
}
};
在 postman
中,当我点击 /dashboard
api 时,它运行良好。并打印输出 success:true, msg:'Welcome in the Area Admin
;
但是当我在 angular js 中使用这个 api 时,节点控制台中的输出是 null
。
下面是我的 angular 函数来使用 api
app.controller('dashboardCtrl', function($scope, $http, $location, $routeParams){
$http.get('/api/dashboard').success(function(res){
$scope.result=res;
})
})
我想知道如何在 angular 中使用基于令牌的路由。我知道上面给出的 angular 函数是不对的。请告诉我正确的代码。
谢谢
您没有为 $http.get()
设置 header。以下是您应该如何做:
$http.get('/api/dashboard', {
headers: {
// Set header for the request here
authorization: token
}
})
.success(function(res) {
// Success
});
我在登录时使用 node.js 创建令牌:
apiRoutes.put('/login', function(req, res, next){
User.findOne({email:req.body.email}, function(err, user){
bcrypt.compare(req.body.password, user.password, function(err, result){
if(result){
var token=jwt.encode(user,config.secret);
return res.json({success: true, token:'JWT' +token});
}else{
return res.json("Incorrect Email and Password")
}
})
})
});
现在我正在尝试用 /dashboard
路由显示用户仪表板页面,我正在做如下的事情:
apiRoutes.get('/dashboard',function(req, res) {
var token=getToken(req.headers);
if(token){
var decode=jwt.decode(token, config.secret);
console.log(decode);
User.findOne({name:decode.name}, function(err, user){
if(err){res.json(err)}
if(!user){
return res.status(403).send({success:false, msg:'Authentication Failed'})
}else{
res.json({success:true, msg:'Welcome in the Area ' +user.name+'!' })
}
})
}else{
return res.status(403).send({success:false, msg:'No Token Found'})
}
});
getToken = function (head) {
if (head && head.authorization) {
var parted = head.authorization.split(' ');
if (parted.length == 2) {
return parted[1];
} else {
return null;
}
} else {
return null;
}
};
在 postman
中,当我点击 /dashboard
api 时,它运行良好。并打印输出 success:true, msg:'Welcome in the Area Admin
;
但是当我在 angular js 中使用这个 api 时,节点控制台中的输出是 null
。
下面是我的 angular 函数来使用 api
app.controller('dashboardCtrl', function($scope, $http, $location, $routeParams){
$http.get('/api/dashboard').success(function(res){
$scope.result=res;
})
})
我想知道如何在 angular 中使用基于令牌的路由。我知道上面给出的 angular 函数是不对的。请告诉我正确的代码。
谢谢
您没有为 $http.get()
设置 header。以下是您应该如何做:
$http.get('/api/dashboard', {
headers: {
// Set header for the request here
authorization: token
}
})
.success(function(res) {
// Success
});