令牌与angularjs

我目前的问题是如何使用令牌将注册路线redirect到主页路线。 这条路线的后端确实创build了令牌,但对于前端我无法弄清楚如何去做。

.controller('UserCreateController', function(User, $location, $localStorage) { var vm = this; // function to create a user vm.SignUpUser = function() { vm.processing = true; // clear the message vm.message = ''; // use the create function in the userService User.create(vm.userData) .success(function(data) { vm.processing = false; // clear the form vm.userData = {}; vm.message = data.message; // What should i do here to get the token? $location.path('/') }); }; }) 

service.js

 userFactory.create = function(userData) { return $http.post('/api/signup', userData); } 

这是服务,我如何使用令牌返回它

更新的版本 :这是我的Api在节点/表示在用户注册后生成令牌

api.js

 var createToken = function(user) { var token = jwt.sign({ id: user._id, name: user.name, username: user.username }, superSecret, { expiresInMinute: 1440 }); return token; } apiRouter.post('/signup', function(req, res) { var user = new User({ name: req.body.name, username: req.body.username, password: req.body.password }); var token = createToken(user); user.save(function(err) { if(err) { res.send(err); return; } res.json({ success: true, message: 'User has been created!', token: token }); }); 

我不知道如何将api生成的json数据传递给angular。

首先,您需要从响应头中检索令牌,请将您的服务更新为:

 userFactory.create = function(userData) { return $http.post('/api/signup', userData) .then(function(data, status, headers, config, status) { return data; }); } 

然后你可以从控制器读取令牌

 User.create(vm.userData) .then(function(data) { vm.processing = false; vm.userData = {}; vm.message = data.message; // remember to reference $window in your controller $window.localStorage.setItem('token', data.token); $location.path('/') }); 

用户login或注册后,下次向后端发送请求时,可以手动将标记添加到标题。

 var req = { method: 'POST', url: 'http://example.com', headers: { 'Authentication': $window.localStorage.getItem('token') }, data: { test: 'test' }, } $http(req).success(function(){...}).error(function(){...}); 

你发布的代码看起来不错。 如果您将此令牌作为服务器API调用的JSON结果的一部分返回,则应该可以在success方法中将其作为datavariables的属性进行访问。

使用Chrome(F12)中的开发人员工具的networking选项卡,当您调用/api/signup时,从服务器返回的内容是什么? 你在那里看到令牌吗?